多个MySQLi准备语句和漏洞(评价我的代码)

时间:2012-07-18 13:10:27

标签: php mysql mysqli

关于MySQLi准备的PHP语句的超长问题。开始。

使用MySQLi准备好的语句是否完全可以接受SQl注入?例如,请参阅下面的代码,我是否认为我可以直接使用$ _POST变量而没有任何注射保护?出于这个问题的目的,请忽略验证数据,以确保它是我的数据库的正确格式(我总是这样做),我更关注安全性。

$mysqli=new mysqli($host, $user, $password, $database);

$stmt=$mysqli->stmt_init();
$stmt->prepare('INSERT INTO `tablename` (`column`) VALUES (?)');

$stmt->bind_param('s', $_POST['value']);
$stmt->execute();

$stmt->close();
$mysqli->close();

我的代码也正确吗?这只是第二次或第三次我使用MySQLi类编写了一个准备好的语句。虽然它有效但我想知道我是否正确地做了一切?该脚本的任何部分都可以被视为不良做法吗?

最后,我将如何进行使用相同数据库连接的多个预准备语句?我只是在$ stmt上使用close()方法,然后初始化另一个$ stmt类?

谢谢!

1 个答案:

答案 0 :(得分:1)

参数绑定对SQL注入是安全的。您无需担心该部分。 用户输入与不安全的SQL语句连接起来。