MySQLi中的参数
我在MySQLi中使用PHP,而且我处于有类似查询的情况
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注入 – 这看起来很脆弱。 谢谢!
奇怪的是,你的问题的标题基本上是答案。 你想使用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相关的function。
请注意,我个人更喜欢使用PDO而不是mysqli,我不喜欢mysqli所做的所有bind_param
/ bind_result
。 如果我必须使用它,我会在它周围写一个包装,使其更像PDO。