在研究了 php.net 之后,我仍然感到困惑。
来自 php.net:mysqli_stmt::bind_result - mysqli_stmt_bind_result - 将变量绑定到预准备语句以存储结果,并将结果集中的列绑定到变量。
我的不确定性: “绑定列” - 哪些列?PHP 是否将变量(var1、var2 等)放入列中。列是否引用数据库中的列?同时,我将研究与 myqli bind_result() 相关的专栏。
来自 php.net: 当调用 mysqli_stmt_fetch() 来获取数据时,MySQL 客户端/服务器协议将绑定列的数据放入指定的变量 var1, ....
我的不确定性: “将数据写入指定变量 var1” - 什么数据?这是用户提供的数据吗?这是 bind_result($x) 生成并返回的数据吗(神奇地?)
我还尝试通过来自有类似问题的成员的 Stackoverflow 帖子了解此功能 - (使用 bind_result 推入数组)在 6 月 17 日 20:36 jskidd3 询问 - 虽然他的代码示例与我的非常相似,他的问题不像我在这里的问题那么基本。
我试图深入了解 mysqli“bind_result()”函数,但我不知道表面上发生了什么。那么,这个函数的目的是什么?另外,你能从理论上说明在绑定结果之后准备语句会是什么样子吗?如果可能的话,你能澄清一下我在 PHP.net 网站上留下的歧义吗?您可以使用我从http://www.mustbebuilt.co.uk/2011/11/17/mysqli-cheatsheet/获得的以下示例。
在下面的示例中,我不明白 $filmName 的什么值被传递给 bind_result($filmName),而且我不明白通过回显输出的结果是什么?
我非常感谢您的帮助并帮助我了解此功能的情况。谢谢!!
查询场景 - 使用 prepare 从用户输入中提取一行:
$stmt = $mysqli->prepare("SELECT filmID, filmName FROM movies WHERE filmID = ?");
$stmt->bind_param('i', $_GET['filmID']);
$stmt->execute();
//what value is being passed - and where is $filmName(and it's value) coming from?
$stmt->bind_result($filmName);
$stmt->fetch();
$stmt->close();
//resulting value or output displayed?
echo $filmName;