Запрос Mysql: date_format и sprintf()

#php #mysql #printf #date-format

#php #mysql #printf #формат даты

Вопрос:

Я хочу использовать sprintf () вместе с date_format в запросе MySQL.

Вот запрос:

 mysql_select_db($database_exdb, $expdb);
$query_eventeditrs = sprintf("SELECT eventid, groupid, title, DATE_FORMAT(dateofevent, '%W, %M %d, %Y'), timeofevent, location, details, presenter, bio FROM events WHERE eventid = %s", GetSQLValueString($colname_eventeditrs, "int")); 
  

Я получаю сообщение об ошибке, которое :

 “Warning: sprintf() [fun
ction.sprintf]: Too few arguments. Query was Empty” 
  

Пожалуйста, помогите

Ответ №1:

Вам нужно экранировать строку формата даты дополнительными%, попробуйте это:

 sprintf("SELECT eventid, groupid, title, 
DATE_FORMAT(dateofevent, '%%W, %%M %%d, %%Y'), 
ti meofevent, location, details, presenter, bio 
FROM events 
WHERE eventid = %s", GetSQLValueString($colname_eventeditrs, "int"));
  

Комментарии:

1. откуда вы знаете, что OP хочет, чтобы эти значения экранировались?

2. Параметр формата @Neal DATE_FORMAT использует % для обозначения типов дат.

Ответ №2:

На самом деле вам нужно выполнить запрос с помощью mysql_query() см. http://php.net/manual/en/function.mysql-query.php

Комментарии:

1. это не имеет ничего общего с mysql_query

Ответ №3:

В строке sprintf у вас есть:

 "SELECT eventid, groupid, title, DATE_FORMAT(dateofevent, '%W, %M %d, %Y'), 
      timeofevent, location, details, presenter, 
       bio FROM events WHERE eventid = %s"
  

Который имеет 5 входные данные, но вы вводите только один ( GetSQLValueString($colname_eventeditrs, "int") ), вводите еще 4, и вы должны быть золотыми (или, как сказано ниже в комментариях, экранируйте 4 входных данных, и это тоже должно сработать)