下面是我的代码:
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();
我在最后一行得到的错误是:调用未定义的方法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 MySQLi', 'NO_CONNECTION');
}
}
catch(Exception $ex){
echo "ERROR: ".$e->getMessage();
}
}
}
如果我写下这一行:
if(!stmt) echo 'Statement prepared'; else echo 'Statement NOT prepared';
它输出未准备的语句‘’。如果我直接在IDE中运行查询,替换?带有值的标记,它工作得很好。请注意,$conn对象在项目中的其他查询中运行良好。
有什么需要帮忙的......
发布于 2011-12-01 23:36:54
请阅读此方法的用户说明:
http://php.net/manual/en/mysqli-stmt.get-result.php
它需要mysqlnd驱动程序...如果它没有安装在你的网站上,你将不得不使用bind_result()
& fetch()
!
发布于 2012-06-21 17:29:10
因此,如果MySQL本机驱动程序(mysqlnd)驱动程序不可用,因此使用bind_result和fetch而不是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();
$stmt->bind_result($EmailVerified, $Blocked);
while ($stmt->fetch())
{
/* Use $EmailVerified and $Blocked */
}
$stmt->close();
$conn->mysqli->close();
发布于 2013-08-04 14:58:56
您的系统缺少mysqlnd驱动程序!
如果您能够在(基于Debian/Ubuntu的)服务器上安装新的软件包,请安装驱动程序:
sudo apt-get install php5-mysqlnd
然后重新启动您的web服务器:
sudo /etc/init.d/apache2 restart
https://stackoverflow.com/questions/8321096
复制相似问题