何时需要使用MySQLi绑定参数?

问题描述 投票:0回答:1

通过此代码,我收到一个错误。

//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():变量数与[...]中准备好的语句中的参数数不匹配>

我进行了调查,因为该错误似乎不正确并且已找到:

PHP Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement

在这种情况下,您不需要绑定参数。占位符用于INSERT语句或WHERE子句中的值。 (请注意,不允许使用占位符作为标识符,例如语句中的列名。)

这使我感到困惑,我现在想知道出于安全性的考虑,何时需要绑定参数,何时需要使用占位符。

通过此代码,我收到了一个错误。 //准备插入语句。 if($ InsertEventQuery = $ mysqli-> prepare(“ INSERT into events(eventname,eventdesc,eventmonth,eventdate,eventyear,eventstart,...

php mysql security mysqli prepared-statement
1个回答
0
投票

绑定参数在任何INSERT语句中都是一个好主意,因为它将防止SQL注入,并且还将免费清理字符串。

我通常会在准备语句中使用问号使它正常工作:

© www.soinside.com 2019 - 2024. All rights reserved.