关于 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 类?
谢谢!