我试图使下面的代码工作,但我无法到达execute()行。
$mysqli = $this->ConnectLowPrivileges();
echo 'Connected<br>';
$stmt = $mysqli->prepare("SELECT `name`, `lastname` FROM `tblStudents` WHERE `idStudent`=?");
echo 'Prepared and binding parameters<br>';
$stmt->bind_param('i', 2 );
echo 'Ready to execute<br>'
if ($stmt->execute()){
echo 'Executing..';
}
} else {
echo 'Error executing!';
}
mysqli_close($mysqli);我得到的输出是:
Connected
Prepared and binding parameters所以问题应该在第5行,但是检查bind_param(),我在那里找不到任何语法错误。
发布于 2013-04-01 17:37:22
绑定参数时,需要传递用作引用的变量:
$var = 1;
$stmt->bind_param('i', $var);见手册:http://php.net/manual/en/mysqli-stmt.bind-param.php
请注意,实际上不必定义$var来绑定它。以下内容是完全有效的:
$stmt->bind_param('i', $var);
foreach ($array as $element)
{
$var = $element['foo'];
$stmt->execute();
}发布于 2014-11-05 04:17:05
这里只是一个简单的解释
声明一个变量是绑定的
$var="email";
$mysqli = $this->ConnectLowPrivileges();
echo 'Connected<br>';
$var="email";
$stmt = $mysqli->prepare("SELECT name, lastname FROM tablename WHERE idStudent=?" LIMIT=1);
echo 'Prepared and binding parameters<br>';
$stmt->bindparam(1,$var); 发布于 2013-04-01 19:05:29
实际问题不是在第5行,而是在第1行。
您正在尝试使用无法使用的驱动程序。
而PDO做的正是你想做的。
$sql = "SELECT `name`, `lastname` FROM `tblStudents` WHERE `idStudent`=?"
$stm = $this->pdo->prepare($sql);
$stm->execute(array(2));
return $stm->fetch();在这个答案写了这么多年之后,出现了一个新的PHP特性,称为“参数解包装”。因此,由于版本5.6,您可以将一个值传递给bind_param:
$stmt->bind_param('i', ...[2]);但是,您仍然很难从准备好的语句中获取数据:)
https://stackoverflow.com/questions/15748254
复制相似问题