mysqli的:: bind_param();变量

时间:2013-09-03 13:34:16

标签: php variables mysqli

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

我从the php manual获取了上述代码,我感到困惑的部分就在这里:

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

老实说,我不确定为什么手册提供的示例完全有效,因为您在声明它们之前使用该变量。

2 个答案:

答案 0 :(得分:1)

bind_param接受引用,如果您不确定引用的确切内容,请点击here获取名为“引用说明”的摘录

这确实意味着,在bind_param之后设置变量是有效的,但是再一次,这取决于您希望如何做到这一点。我赞一个,更喜欢在绑定之前声明变量

小观察

变量在执行之前声明,并且PHP从上到下处理。当实际需要变量时(在执行时)它们已经被设置,如果你在execute()之后声明你的变量,你会被提示SQL失败和其他不需要的php错误

答案 1 :(得分:0)

是的,因为mysqli_stmt::bind_paramBinds variables to a prepared statement as parameters并且它使用对这些变量的引用,这样每当您更改它们时,更改都会反映出来。

相关问题