【发布时间】:2013-09-03 12:58:53
【问题描述】:
我刚开始学习 MYSQLI 准备语句技术,遇到了非常烦人的问题。我的代码在 bind_result() 处停止。我只是不明白可能出了什么问题,所以请大家帮帮我。
这是我的 config.php:
<?php
$db_name = 'site';
$db_user = 'root';
$db_pass = 'root';
$db_host = 'localhost';
$db_port = 8889;
$db = new mysqli($db_host, $db_user, $db_pass, $db_name, $db_port);
if($db->connect_errno > 0){
die('Unable to connect to database [' . $db->connect_error . ']');
}
?>
还有我的主要代码:
<?php
include 'config.php';
$post_id=450;
$stmt = $db->prepare("SELECT * FROM messages WHERE post_id = ?");
if ( false===$stmt ) {
die('prepare() failed: ' . htmlspecialchars($db->error));
}
$ex=$stmt->bind_param('i', $post_id); // Bind "$post_id" to parameter.
if ( false===$ex ) {
die('bind_param() failed: ' . htmlspecialchars($stmt->error));
}
$ex=$stmt->execute();// Execute the prepared query.
if ( false===$ex ) {
die('execute() failed: ' . htmlspecialchars($stmt->error));
}
$ex=$stmt->store_result();
if ( false===$ex ) {
die('store_result() failed: ' . htmlspecialchars($stmt->error));
}
$ex=$stmt->bind_result($p);
if ( false===$ex ) {
die('bind_result() failed: ' . htmlspecialchars($stmt->error));
}
while($stmt->fetch()){
echo $p;
}
?>
【问题讨论】:
-
首先,您的表中是否有帖子 ID 为 450 的行?其次,您在添加错误检测时遇到了一些麻烦,但为什么中途停止呢?
store_result和bind_result都可能失败。 -
如你所说,我已经添加了。并且代码在 bind_result() 阶段停止。
-
错误提示...?
-
Number of bind variables doesn't match number of fields如果你想知道
标签: php mysql mysqli prepared-statement