$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world');
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$stmt = $mysqli->prepare("INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)");
$stmt->bind_param('sssd', $code, $language, $official, $percent);
$code = 'DEU';
$language = 'Bavarian';
$official = "F";
$percent = 11.2;
/* execute prepared statement */
$stmt->execute();我从php手册获取了上面的代码,我对以下部分感到困惑:
$stmt->bind_param('sssd', $code, $language, $official, $percent);
$code = 'DEU';
$language = 'Bavarian';
$official = "F";
$percent = 11.2;首先声明变量,然后将它们传递给bind_param(),使用此代码是否有效和等效?
因此:
$code = 'DEU';
$language = 'Bavarian';
$official = "F";
$percent = 11.2;
$stmt->bind_param('sssd', $code, $language, $official, $percent);老实说,我不知道为什么手册给出的示例是有效的,因为您在声明变量之前使用了变量。
发布于 2013-09-03 13:49:03
bind_param接受引用,如果您不确定确切的引用是什么,那么单击这里作为被命名为“References解释性”的摘录。
这确实意味着,在bind_param之后设置变量是有效的,但同样,这取决于您希望如何做。例如,我更喜欢在绑定之前声明变量。
很少观察
变量是在执行之前声明的,因为PHP从上到下处理。当实际需要变量时(在执行时),如果您在execute()之后声明变量,则会出现SQL失败和其他不必要的php错误。
发布于 2013-09-03 13:37:32
是的,因为param:Binds variables to a prepared statement as parameters和它使用了对这些变量的引用,所以每当您更改它们时,更改都会反映在它们上。
https://stackoverflow.com/questions/18593728
复制相似问题