从这段代码我收到了一个错误。
//Prepare insert statement.
if($InsertEventQuery = $mysqli->prepare("INSERT into events(eventname, eventdesc, eventmonth, eventdate, eventyear, eventstart, eventend) VALUES ('$EventName','$EventDesc','$EventMonth','$EventDate','$EventYear','$EventStart','$EventEnd')"))
{
//Bind parameters of insert statement.
$InsertEventQuery->bind_param('ssiiiii', $EventName, $EventDesc, $EventMonth, $EventDate, $EventYear, $EventStart, $EventEnd);
这是错误:
“警告:mysqli_stmt :: bind_param():变量数量与[...]”
中预准备语句中的参数数量不匹配我调查了它,因为错误似乎不正确并找到了:
“在这种情况下,您不需要绑定参数。占位符用于INSERT语句或WHERE子句中的值。(请注意,不允许使用占位符作为标识符,例如语句中的列名称。)“
这使我感到困惑,我现在想知道安全性,何时需要绑定参数以及何时需要使用占位符。
谢谢!
答案 0 :(得分:0)
绑定参数在任何INSERT语句中都是一个好主意,因为它会阻止SQL注入,并且还会免费清理字符串。
我通常在准备语句中使用问号来使用它:
//Prepare insert statement.
if ($InsertEventQuery = $mysqli->prepare("INSERT into events(eventname, eventdesc, eventmonth, eventdate, eventyear, eventstart, eventend) VALUES (?, ?, ?, ?, ?, ?, ?)"))
{
//Bind parameters of insert statement.
$InsertEventQuery->bind_param('ssiiiii', $EventName, $EventDesc, $EventMonth, $EventDate, $EventYear, $EventStart, $EventEnd);