【发布时间】:2015-01-05 17:38:22
【问题描述】:
我正在尝试理解使用 PHP 和 mysqli 准备的语句。我试图阅读一些教程、手册和这个:Bind_Param in PHP,但我还没有找到任何令人满意的答案。
有人在回答中写道:
准备 SQL 语句时,可以插入占位符 (?) 列值将去哪里,然后使用 bind_param() 安全地 将该占位符替换为实际列的值。这可以防止 任何可能的 SQL 注入。
我在这样的教程中找到了一些代码:
$stmt = $con->prepare("INSERT INTO user_accounts VALUES (?,?,?,?)");
$stmt->bind_param('xyz', $sample1, $sample2, $sample3, $sample4); // bind to the parameter
我知道我们写的是“?”而不是我们的变量,以便稍后可以给出实际值。 MySQL 为查询执行准备一个计划,然后将变量作为参数给出。
这行代码是什么意思?
bind_param('xyz', $sample1, $sample2, $sample3, $sample4);
四个变量以“xyz”作为参数给出...参数“xyz”到底是什么意思?有没有必要写,以后还会用吗?我没有发现它在其他地方使用过。
我只想要第一个参数的答案:
【问题讨论】:
-
@krupalshah 我什至还没有投票给任何东西。但手册中的咨询会有所帮助。它向您展示了每个论点的含义和代表。您还希望有人在这里写下它作为答案吗?在这里,它在手册中。 i.imgur.com/WxGTcL8.png
-
根据手册:
types- 包含一个或多个字符的字符串,用于指定相应绑定变量的类型。这里有什么不清楚的地方? -
@u_mulder 很难理解 'sssd' 是第一次输入的类型。不是吗?
-
@krupalshah — 如果您阅读了 Ghost 之前指出的对它的描述,则不会。
-
@krupalshah 我认为你写的问题太宽泛了。我对其进行了编辑,以更专注于您的实际问题。
标签: php mysql mysqli prepared-statement bindparam