我一直在阅读有关使用isert语句中直接使用的$ _POST值并了解这是一个麻烦的邀请。在我读到的任何帖子中都不清楚的是 - 假设我的表单正在向我的mysqli插入脚本发送7个项目,我使用这样的发布值:
$stmt = $mysqli->prepare("INSERT INTO `advertisements` (`from`, `r_u_res`, `email`, `blockname`, `floorno`, `doorno`, `content`) VALUES (?, ?, ?, ?, ?,?,?)");
$stmt->bind_param('sssssss', $_POST['from'], $_POST['rures'], $_POST['email'], $_POST['blockname'], $_POST['floorno'], $_POST['doorno'], $_POST['content']);
$stmt->execute();
$stmt->close();
这是正确的方法吗?或者我应该首先将发布的值存储在新变量中并在绑定时使用该变量? - 像这样:
$postedfrom = $_POST['from'];
$postedrures = $_POST['rures'];
$postedemail = $_POST['email'];
$postedblockname = $_POST['blockname'];
$postedfloorno = $_POST['floorno'];
$posteddoorno = $_POST['doorno'];
$postedcontent = $_POST['content'];
$stmt = $mysqli->prepare("INSERT INTO `advertisements` (`from`, `r_u_res`, `email`, `blockname`, `floorno`, `doorno`, `content`) VALUES (?, ?, ?, ?, ?,?,?)");
$stmt->bind_param('sssssss', $postedfrom, $postedrures, $postedemail, $postedblockname, $postedfloorno, $posteddoorno, $postedcontent);
$stmt->execute();
$stmt->close();
我看到一篇帖子OO mysqli prepared statements help please,答案看起来像上面的代码,但我想知道是否像第一个代码一样构成安全问题......
答案 0 :(得分:0)
从安全角度来看,这两种形式都是等价的,因为php首先解析了在方法调用中传递给$stmt->bind_param
的值,因此该函数在两种情况下都会看到完全相同的值。
ps:这两个片段看起来都不错。