为了账号安全,请及时绑定邮箱和手机立即绑定

MySQLi中的参数

/ 猿问

MySQLi中的参数

白衣非少年 2019-12-06 10:39:31

我正在将PHP与MySQLi结合使用,并且遇到类似以下问题的情况


SELECT $fields FROM $table WHERE $this=$that AND $this2=$that2

到目前为止,我已经写了一些代码来拼接一个数组,例如:


$search = array(name=michael, age=20) //turns into

SELECT $fields FROM $table WHERE name=michael AND age=20

有没有更有效的方法可以做到这一点?


我相当担心MySQL注入-这似乎非常脆弱。谢谢!


查看完整描述

1 回答

?
叮当猫咪

奇怪的是,您问题的标题基本上就是答案。您想使用mysqli参数化查询来执行以下操作:


$db = new mysqli(<database connection info here>);

$name = "michael";

$age = 20;


$stmt = $db->prepare("SELECT $fields FROm $table WHERE name = ? AND age = ?");

$stmt->bind_param("si", $name, $age);

$stmt->execute();

$stmt->close();

有关更多信息,请参见手册的mysqli部分,尤其是与MySQLi_STMT相关的功能。


注意,我个人更喜欢使用PDO而不是mysqli,我不喜欢 mysqli的所有bind_param/ bind_result东西。如果必须使用它,可以在它周围编写包装器以使其更像PDO。


查看完整回答
反对 2019-12-06

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信