在研究了php.net之后,我仍然很困惑。
From php.net: mysqli_stmt::bind_result -- mysqli_stmt_bind_result --将变量绑定到为结果存储而准备的语句中,并将结果集中的列绑定到变量。
我的不确定性:“绑定列”-什么列?PHP是否放置变量(var1、var2等.)变成纵队。列是否引用数据库中的列?同时,我将研究与myqli bind_result()相关的专栏。
From php.net:当调用mysqli_stmt_fetch()来获取数据时,MySQL客户机/服务器协议将绑定列的数据放置到指定的变量var1中,.
我的不确定性:“数据进入指定变量var1”-什么数据?这是用户提供的数据吗?这是bind_result($x)生成并返回的数据(神奇地)吗?
我还试图通过一个具有类似问题的成员(使用bind_result推入数组)在20:36 jskidd3上询问六月17,尽管他的代码示例与我的非常相似,但他的问题并不像我这里的问题那样基本。
我试图深入了解mysqli "bind_result()“函数,我甚至不知道表面发生了什么。那么,这个功能的目的是什么呢?另外,您能否从理论上说明预准备语句在绑定结果之后会是什么样子?如果可能的话,你能澄清我在PHP.net网站上留下的不明确之处吗?您可以使用我从http://www.mustbebuilt.co.uk/2011/11/17/mysqli-cheatsheet/获得的下面的示例。
在下面的示例中,我不知道$filmName被传递给bind_result($filmName)的值是什么,也不知道通过回显输出的结果是什么?
我真的很感激你的帮助,并帮助我理解这个功能是怎么回事。谢谢你!!
查询方案-使用准备:从用户输入中的一行
$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;发布于 2013-10-21 05:54:13
“绑定列”
引用查询结果的列。
“数据进入指定变量var1”
当您执行一个fetch (如$stmt->fetch())时,绑定变量根据绑定被赋值。不需要每次都显式地赋值。
用于查询
$stmt = $mysqli->prepare("SELECT filmID, filmName FROM movies WHERE filmID = ?");按顺序排列,列是filmID、filmName。
调用bind_result时,它将第一个变量绑定到结果中的第一列。在这种情况下,
$stmt->bind_result($filmName); 实际上,最终将变量$fileName绑定到filmID字段。
如果希望正确绑定filmName,则可以重新处理查询,以便首先使用filmName:
$stmt = $mysqli->prepare("SELECT filmName, filmID FROM movies WHERE filmID = ?");或者可以绑定filmID变量:
$stmt->bind_result($filmID, $filmName); 发布于 2020-05-22 18:39:58
在PHP中执行以下语句时,结果存储在MySQL中,而不是在PHP中。二进制MySQL协议的工作方式是,您需要从语句中提取每一行,直到MySQL告诉您没有更多要获取的内容为止。
$stmt = $mysqli->prepare("SELECT filmID, filmName FROM movies WHERE filmID = ?");
$stmt->bind_param('i', $_GET['filmID']);
$stmt->execute(); mysqli扩展的设计者认为,如果每次调用fetch()方法时,MySQL服务器上的数据将被绑定到单独的变量中,而不是获取一个PHP数组,这将是一个好主意(不是)。需要使用bind_result()方法绑定变量。该方法将创建变量,每次进行fetch()调用时,它都会将来自MySQL的数据分配给PHP变量。如果数据存储在PHP中,那么数据将从内部缓冲区中获取。
列引用在SELECT语句中指定的列列表。这些变量的绑定顺序与SQL中列出的列相同。您正在选择两列filmID, filmName,因此理想情况下,您应该为PHP提供两个变量以将数据插入其中。
$stmt->bind_result($filmID, $filmName); https://stackoverflow.com/questions/19486632
复制相似问题