【发布时间】:2013-04-01 20:06:06
【问题描述】:
在mysql 控制台我有这个
mysql> SELECT `name`, `lastname` FROM `tblStudents` WHERE `idStudent`='2';
+--------------+-----------------+
| name | lastname |
+--------------+-----------------+
| Lucio | Martínez |
+--------------+-----------------+
1 row in set (0.00 sec)
所以我想在 PHP 中使用准备好的语句来获取这个学生的姓名和姓氏。
这是代码:
$mysqli = $this->ConnectLowPrivileges();
echo 'Connected<br>';
$stmt = $mysqli->prepare("SELECT `name`, `lastname` FROM `tblStudents` WHERE `idStudent`=?");
if (false==$stmt){
die('prepare() failed: ' . htmlspecialchars($mysqli->error));
}
$id = 2;
if ($rc = $stmt->execute(array($id))){
if ($row = $stmt->fetch()){
echo "Name: {$row[0]}.<br>Last name: {$row[1]}.<br>";
echo 'Another way:'.print_r($row);
}
}
if (false==$rc){
die('execute() failed: ' . htmlspecialchars($stmt->error));
}
echo 'done';
mysqli_close($mysqli);
return true;
第二个条件给出 false,我得到的输出是这样的:
Connected
execute() failed:
PHP 与数据库的连接没有问题。
我不知道确切的错误,因为$stmt->error 什么也没返回。
【问题讨论】:
-
你需要先给自己一些教程。只使用随机运算符不会有任何好处。对于初学者来说,一个简单的谷歌搜索“mysqli 教程”就足够了。一旦你得到这样的教程,试着运行他们提供的例子。一旦熟悉了它们,您就可以开始根据需要采用这些示例代码。
-
@YourCommonSense 我一个星期以来一直在搜索,阅读帖子,文章,尝试了几个代码。但我无法让它工作。
-
你需要
bind_param使用MySQLi类。execute不允许绑定参数(除非你使用PDO)。因此,绑定参数$id,您的查询应该会运行。 -
@Jon 所以在使用
bind_param()之后我需要运行execute()吗? -
是的,在您执行查询之前不会运行查询,绑定参数只是将其放置到位以便您可以运行它。
标签: php mysql mysqli prepared-statement