【发布时间】:2014-10-20 23:42:54
【问题描述】:
我想使用 mysqli 执行一个简单的预处理语句,但它不起作用。
我有这张桌子:
CREATE TABLE IF NOT EXISTS `account` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`email` varchar(100) COLLATE latin1_german2_ci NOT NULL,
`password` varchar(100) COLLATE latin1_german2_ci NOT NULL,
`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci AUTO_INCREMENT=4 ;
并且想要打印特定电子邮件的 id。
$mysqli = new mysqli($server,$user,$pass,$db);
if(mysqli_connect_errno()) {
echo "Connection Failed: " . mysqli_connect_errno();
exit();
}
$user = "test@dada.com";
$pass = "dada";
/* Create a prepared statement */
if($stmt = $mysqli -> prepare("SELECT * FROM account WHERE email=?
AND password=?")) {
/* Bind parameters
s - string, b - blob, i - int, etc */
$stmt -> bind_param("ss", $user, $pass);
/* Execute it */
$stmt -> execute();
/* Bind results */
$stmt -> bind_result($result);
/* Fetch the value */
$stmt -> fetch();
echo $user . "id of user is " . $result;
/* Close statement */
$stmt -> close();
}
/* Close connection */
$mysqli -> close();
但我得到以下错误:
致命错误:未捕获的异常 'mysqli_sql_exception' 带有消息 'No index used in query/prepared statement SELECT * FROM account WHERE email=?和密码=? mysqli_stmt->execute() #1 {main}
【问题讨论】:
-
尝试添加此
mysqli_report (MYSQLI_REPORT_OFF);并查看此问答stackoverflow.com/q/5580039,我在其中搜索了错误消息。
标签: php mysqli prepared-statement