首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在PHP中运行bind_param()语句?

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

Stack Overflow用户
提问于 2013-04-01 17:29:58
回答 3查看 52.3K关注 0票数 11

我试图使下面的代码工作,但我无法到达execute()行。

代码语言:javascript
复制
$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);

我得到的输出是:

代码语言:javascript
复制
Connected
Prepared and binding parameters

所以问题应该在第5行,但是检查bind_param(),我在那里找不到任何语法错误。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-01 17:37:22

绑定参数时,需要传递用作引用的变量:

代码语言:javascript
复制
$var = 1;

$stmt->bind_param('i', $var);

见手册:http://php.net/manual/en/mysqli-stmt.bind-param.php

请注意,实际上不必定义$var来绑定它。以下内容是完全有效的:

代码语言:javascript
复制
$stmt->bind_param('i', $var);

foreach ($array as $element)
{

    $var = $element['foo'];

    $stmt->execute();

}
票数 13
EN

Stack Overflow用户

发布于 2014-11-05 04:17:05

这里只是一个简单的解释

声明一个变量是绑定的

代码语言:javascript
复制
    $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); 
票数 0
EN

Stack Overflow用户

发布于 2013-04-01 19:05:29

实际问题不是在第5行,而是在第1行。

您正在尝试使用无法使用的驱动程序。

PDO做的正是你想做的。

代码语言:javascript
复制
$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:

代码语言:javascript
复制
$stmt->bind_param('i', ...[2]);

但是,您仍然很难从准备好的语句中获取数据:)

票数 -7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15748254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档