2009-10-25 2 views
2

Эта строка дает ошибку: «Слишком мало аргументов». В чем проблема?[PHP]: Ошибка -> Слишком мало аргументов в sprintf();

$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); 

ответ

6

Ну, ваша строка указывает 12 заполнителей, и вы предоставляете только 9 значений. Функция sprintf требует, чтобы вы передавали столько значений, сколько количества заполнителей, которые вы указываете в строке формата. Я на самом деле думаю, что сообщение об ошибке поразительно ясно и примерно такое же сообщение об ошибке, какое вы когда-либо увидите.

+0

Точно, ошибка слишком четкая. Я передаю 9 аргументов, а их 9%. Можете ли вы прояснить, где находятся 12-тиместные держатели? – RKh

+2

Вы забыли о '% Y% m% d' - это также заполнители. –

+0

Ну, по крайней мере, '% d' is - Я не уверен, считает ли PHP спецификаторы типа% Y и'% m'. –

6

аргументы - это выражения, и они должны соответствовать числу спецификаторов формата%. Если вам действительно нужен символ%, используйте %%.

+0

это сводило меня с ума, спасибо – user2203384

Смежные вопросы