如何运行在PHP中bind_param()语句?如何运行在PHP中bind_param()语句?(H

2019-05-12 03:08发布

我试图让下面的代码工作,但我不能达到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()我无法找到任何语法错误在那里。

Answer 1:

当绑定的参数需要传递,用作参考的变量:

$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();

}


Answer 2:

这只是一个简单的解释
声明一个变量被结合

    $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); 


Answer 3:

你的实际问题不是在第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]);

但你仍然有让您的数据备份事先准备好的声明的麻烦:)



文章来源: How to run the bind_param() statement in PHP?