[PHP]:错误->;sprintf()中的参数太少;

[PHP]:错误->;sprintf()中的参数太少;,php,Php,这一行给出了错误:“参数太少”。有什么问题 $InsertQuery = sprintf("INSERT INTO listing (ldate, places, company, designation, projectdetails, desiredcandidate, hrname, hrcontact, email) VALUES (DATE_FORMAT(%s,'%Y %m %d),%s,%s,%s,%s,%s,%s,%s,%s)", $ldate,$places,$company,$

这一行给出了错误:“参数太少”。有什么问题

$InsertQuery = sprintf("INSERT INTO listing (ldate, places, company, designation, projectdetails, desiredcandidate, hrname, hrcontact, email) VALUES (DATE_FORMAT(%s,'%Y %m %d),%s,%s,%s,%s,%s,%s,%s,%s)", $ldate,$places,$company,$designation, htmlentities($projectdetails), htmlentities($desiredcandidate),$hrname,$hrcontact,$email);

您的字符串指定了12个占位符,而您只提供了9个值。
sprintf
函数要求传递的值与在格式字符串中指定的占位符数量相同。事实上,我认为错误消息非常清楚,并且是您将看到的最好的错误消息。

参数是表达式,它们的数量应该与%格式说明符匹配。如果您真的只需要%char,请使用%。

确切地说,错误太明显了。我正在传递9个参数,它们是9%s。你能澄清一下12位的位置吗?你忘记了
%Y%m%d
-这些也是占位符。至少
%d
是-我不确定PHP是否考虑了
%Y
%m
有效的类型说明符。但这些是MySQL数据格式函数的一部分。我忘了以'结尾。这就是“%Y%m%d”,但这并不能解决我的问题。sprintf是否将以%开头的所有内容都视为占位符?无论后面的内容是否是合法的类型说明符,从字面上转义任何想要输出的
%
都是一个好主意。它可能在将来成为一个。