小编kus*_*tus的帖子

调用未定义的方法mysqli_stmt :: get_result

这是我的代码:

include 'conn.php';
$conn = new Connection();
$query = 'SELECT EmailVerified, Blocked FROM users WHERE Email = ? AND SLA = ? AND `Password` = ?';
$stmt = $conn->mysqli->prepare($query);
$stmt->bind_param('sss', $_POST['EmailID'], $_POST['SLA'], $_POST['Password']);
$stmt->execute();
$result = $stmt->get_result();
Run Code Online (Sandbox Code Playgroud)

我在最后一行得到错误:调用未定义的方法mysqli_stmt :: get_result()

这是conn.php的代码:

define('SERVER', 'localhost');
define('USER', 'root');
define('PASS', 'xxxx');
define('DB', 'xxxx');
class Connection{
    /**
     * @var Resource 
     */
    var $mysqli = null;

    function __construct(){
        try{
            if(!$this->mysqli){
                $this->mysqli = new MySQLi(SERVER, USER, PASS, DB);
                if(!$this->mysqli)
                    throw new Exception('Could not create connection using …
Run Code Online (Sandbox Code Playgroud)

php mysqli

107
推荐指数
9
解决办法
12万
查看次数

无法调用oracle存储过程和函数

问题可能过于简单,但我确实需要帮助.

我在Oracle 10g中创建了一个存储过程,但我无法调用它.我正在使用SQL Developer来管理数据库.

CREATE OR REPLACE
FUNCTION check_login 
  (username IN VARCHAR2, pwd IN VARCHAR2)
  RETURN VARCHAR2
IS
  isUserValid INTEGER;
BEGIN
  SELECT Count(*) INTO isUserValid
  FROM users
  WHERE Username = username AND PASS_WORD = pwd;
  return isUserValid;
END;
Run Code Online (Sandbox Code Playgroud)

我也尝试了这个:

CREATE OR REPLACE
PROCEDURE check_login 
  (username IN VARCHAR2, pwd IN VARCHAR2, RESULT OUT INTEGER)
IS
  isUserValid INTEGER;
BEGIN
  SELECT Count(*) INTO isUserValid
  FROM users
  WHERE Username = username AND PASS_WORD = pwd;
  RESULT := isUserValid;
END;
Run Code Online (Sandbox Code Playgroud)

解析两者都不会给出任何错误消息.我使用以下语法来调用它们:

BEGIN 
  check_login('admin', 'admin'); 
END; …
Run Code Online (Sandbox Code Playgroud)

oracle stored-procedures function oracle10g

16
推荐指数
2
解决办法
4万
查看次数

如何在PHP中解决"无法通过引用传递参数"错误?

这是我的代码:

$stmt = $conn->mysqli->prepare('INSERT INTO photos (CaseNo, ImageName, CaptureTime, UploadTime) VALUES (?,?,?,?)');
$stmt->bind_param('isss', $caseno, $index.'.'.$extension, date('Y-m-d H:i:s'), date('Y-m-d H:i:s'));
Run Code Online (Sandbox Code Playgroud)

我也尝试了这个:

$stmt = $conn->mysqli->prepare('INSERT INTO photos (CaseNo, ImageName, CaptureTime, UploadTime) VALUES (?,?,?,?)');
$captureTime = date('Y-m-d H:i:s');
$uploadTime = date('Y-m-d H:i:s');
$stmt->bind_param('isss', $caseno, $index.'.'.$extension, $captureTime, $uploadTime);
Run Code Online (Sandbox Code Playgroud)

我收到错误:

致命错误:**无法通过引用传递参数3**...文件路径...行#

请注意,CaptureTimeUploadeTime具有数据类型日期.并忽略我传递第3和第4参数的值相同的事实.

代码有什么问题?

php mysqli

10
推荐指数
1
解决办法
2万
查看次数

如何获取在JavaScript/PHP中上传文件的修改时间?

有没有办法使用JavaScript/PHP获得正在上传的文件的实际创建/修改时间?

至于JavaScript,我已经研究了很多,尝试了很多代码,但没有运气(或许试图做出可能的不可能).

至于PHP,使用filectime ()filemtime(),它只显示文件上传的日期/时间,而不是文件在源上实际创建/修改的时间.

简而言之,我想要的是在上传之前/期间/之后(尽可能地)检查文件的m时间,并决定是否将文件存储在服务器上,并将其报告回客户端.

javascript time file

8
推荐指数
2
解决办法
1万
查看次数

如何在IIS上同时运行多个版本的PHP

我在PHP中开发了一个名为vishwasthali.org的网站,并在第三方服务器上将其托管在IIS7中.除了我使用MySQLi API 编写的数据库访问代码之外,其他所有工作都正常.代码在localhost上运行正常,但在服务器上运行不正常.使用phpinfo()服务器和我的机器上,我发现:

(1)在我的机器上(在Windows 7 32位,Apache托管环境中运行),PHP版本为5.3.8,mysqli版本为5.0.8-dev,并且

(2)在服务器上(在Windows Server 2008,IIS7托管环境中运行),PHP版本为5.2.14,mysqli版本为5.0.51a.


以下是phpinfo()服务器上的屏幕截图: 在此输入图像描述 在此输入图像描述


这是mysqli代码的示例.

session_start();
include_once 'code_files/conn.php';
$stmt = $mysqli->prepare('SELECT * FROM adminusers WHERE Username = ? AND `Password` = ?');
$stmt->bind_param('ss', $_POST['Username'], $_POST['Password']);
$stmt->execute();
$result = $stmt->get_result();
if($result->num_rows > 0)
    ........
else
    ........
Run Code Online (Sandbox Code Playgroud)

使用echo get_class($mysqli);确实显示mysqli.这意味着,代码确实检测到了mysqli.但声明$stmt没有准备好.即使$mysqli->error;不显示任何错误,也可能是因为PHP在IIS上运行.

现在我有两个选择,要么更改数据库访问经典mysql API 的代码,要么通过从php.net下载最新的PHP二进制文件来升级服务器上的PHP和MySQLi版本.我不想选择第一个选项(这肯定有效),希望你知道为什么.后者不在我手中.想不出比这些更多的东西.

我想更换php_mysqli.dll可能会升级mysqli版本,不确定.但是PHP版本怎么样?

在这种情况下我该怎么办?在服务器上升级PHP和MySQLi版本会解决我的问题吗?如果是,是否会影响服务器上运行的其他PHP网站?

提前致谢.

php windows iis-7 mysqli

8
推荐指数
2
解决办法
6541
查看次数

在AJAX调用中从PHP返回JSON对象?

这是我在jQuery AJAX调用期间调用的PHP代码:

<?php
    include '../code_files/conn.php';
    $conn = new Connection();
    $query = 'SELECT Address_1, Address_2, City, State, OfficePhone1, OfficePhone2, Fax1, Fax2, Email_1, Email_2 
              FROM clients WHERE ID = ?';
    $conn->mysqli->stmt_init();
    $stmt = $conn->mysqli->prepare($query);
    $stmt->bind_param('s', $_POST['ID']);
    $stmt->execute();
    $result = $stmt->get_result();
    $row = $result->fetch_assoc();
    echo json_encode($row);
?>
Run Code Online (Sandbox Code Playgroud)

客户端代码是:

$.post(url, {ID:$('#ddlClients').val()},
        function(Result){
            // Result
        }
      );
Run Code Online (Sandbox Code Playgroud)

AJAX调用已成功完成.我得到的值,结果

"{"Address_1":"Divisional Office 1","Address_2":"The XYZ Road",.....and so on

我想要的是能够使用返回的值,如Result.Address_1,Result.Address_2等.但我不能使用上面的代码.我试着用$row = $result->fetch_object()$row = $result->fetch_array(),但没有用.

我知道这可以通过服务器端的代码完成:

$row = $result->fetch_assoc();
$retVal = array("Address_1"=>$row['Address_1'], "Address_2"=>$row['Address_2'].......);
echo …
Run Code Online (Sandbox Code Playgroud)

php jquery json

7
推荐指数
2
解决办法
3万
查看次数

如何读取PHP上传文件的标题?

我们可以在PHP中读取文件的头信息来确定上传的文件类型吗?

我不想依赖$_FILES['control_name_from_client']['type'].我们知道这个属性通过读取上传文件的扩展名来确定文件类型.

如果什么用户重命名,比如test.jpg放在 - > TEST.XLS.在这种情况下,$_FILES['control_name_from_client']['type']将显示类型为application/vnd.ms-excel而不是image/jpeg.如果必须执行代码来读取XLS文件以获取某些处理的数据,这很自然会产生问题.

有什么建议吗?

php file-upload header

5
推荐指数
1
解决办法
9765
查看次数

在托管网站中安装mysqlnd

我正在开发一个PHP的网站 - MySQL.以下是一些注意事项:

  • 我使用MySQLi API进行数据库访问.
  • 在我本地安装的XAMPP(Windows 7机器)中,PHP版本是5.3.8,MySQL版本是mysqlnd 5.0.8-dev - 20102224
  • 我在一个免费的托管服务器上托管了这个网站,用于测试"cuccfree.com".PHP版本为5.3.14,MySQL版本为5.1.66.与许多其他托管公司相比,它仍然对MySQLi提供了更好的支持.
  • 在phpinfo'ing这两者,本地机器显示安装了mysqlnd驱动程序,但托管服务器没有.
  • 我为MySQLi创建了一个包装类,它使用函数mysqli_stmt :: get_result()获取ResultSet .此函数适用于我的本地计算机,但不适用于cuccfree.com托管服务器,因为mysqli对象没有名为get_result()的方法.但是,mysqli_stmt对象已准备好并且bind_param已成功完成.
  • 对于手册页mysqli_stmtphp.net说,对使用mysqli_stmt :: get_result() ,我们需要有mysqlnd安装的驱动程序.
  • 服务器的配置提供了mysqli_stmt :: bind_object()的使用.但get_result()对我来说似乎是一个更好的选择,因为我们可以得到一个数组的形式.我已使用以下行重写函数以接受可变数量的参数:

    call_user_func_array(array($ stmt,'bind_param'),$ params);

$ params是一个参数数组.

  • 使用bind_object(),我必须绑定返回给变量的每一列.在这种情况下,我无法创建一个包装类函数来处理单点的所有SQL查询.

我寻找了几家托管公司,通过谈话和邮寄给许多公司的客户支持,包括GoDaddy和Manas Hosting,他们不提供使用mysqlnd.从逻辑上讲,他们坚持使用VPS或专用服务器.显然,即使在入门级别,建议的选项都非常昂贵.

所以,最后我的问题是,我们可以将mysqlnd安装/嵌入Linux服务器上的网站吗?如果没有,我有什么办法可以阻止我更改整个网站的代码,这将花费我很多天?

问候

php mysqli mysqlnd

5
推荐指数
1
解决办法
5037
查看次数

使用mysql_query()获取位字段

这是我的代码:

$query = "SELECT Username, EmailVerified, Blocked FROM user";
$result = mysql_query($query, $link);
$row = mysql_fetch_assoc($result);
print_r($row);
Run Code Online (Sandbox Code Playgroud)

字段Username字符串,EmailVerified并且Blocked类型为bit.该行print_r($row)显示Username字段的值,但不显示其他两个值.我也尝试了mysql_fetch_object(),mysql_fetch_row(),mysql_fetch_array(),但结果相同.

我们不能用mysql_query()获取位字段吗?

php mysql

4
推荐指数
1
解决办法
7021
查看次数

如何在PHP中动态实例化对象?

我们可以在PHP中动态创建和初始化对象吗?这是正常的代码:

class MyClass{
    var $var1 = null;
    var $var2 = null;
    .
    .
    public function __construct($args){
        foreach($args as $key => $value)
            $this->$key = $value;
    }
}
---------------------
$args = ($_SERVER['REQUEST_METHOD'] == "POST") ? $_POST : $_REQUEST;
$obj = new MyClass($args);
Run Code Online (Sandbox Code Playgroud)

上面的代码工作正常.请注意,REQUEST参数的名称与MyClass类的成员准确对应.

但我们可以做这样的事情:

$class = "MyClass";
$obj = new $class;
Run Code Online (Sandbox Code Playgroud)

如果我们可以这样做,那么我们可以使用$ args初始化$ obj.

根据这篇文章,$ obj = $ class应该有效.但它对我不起作用.我试过get_class_vars($ obj).它引发了一个例外.

谢谢

php oop dynamic object

3
推荐指数
3
解决办法
2万
查看次数

如何通过正则表达式分隔的拆分功能将VBA中的字符串拆分为数组

我正在编写Excel加载项以读取文本文件,提取值并将它们写入Excel文件。我需要分割一条由一个或多个空格分隔的线,并将其以数组的形式存储,从中提取所需的值。

我正在尝试实现这样的事情:

arrStr = Split(line, "/^\s*/")
Run Code Online (Sandbox Code Playgroud)

但是编辑器在编译时抛出错误。

我该怎么办?

regex excel vba excel-addins

1
推荐指数
1
解决办法
380
查看次数