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。