我试图让下面的代码工作,但我不能达到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()
我无法找到任何语法错误在那里。
当绑定的参数需要传递,用作参考的变量:
$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();
}
这只是一个简单的解释
声明一个变量被结合
$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);
你的实际问题不是在第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]);
但你仍然有让您的数据备份事先准备好的声明的麻烦:)