Преобразование формата MYSQL DATE в формат STRING для php - PullRequest
1 голос
/ 19 февраля 2012

Мне нужна помощь в преобразовании формата DATE в формат STRING.

У меня есть переменная из столбца базы данных mysql типа DATE.

Я хочу выполнить на ней функцию php explode (), однако я получаю сообщение об ошибке, говорящее, что параметр долженстрока.

Это код для получения переменной из базы данных:

$duedate = mysql_query("SELECT duedate FROM mtt_todolist WHERE id=$id") ;

I Затем я хочу использовать функцию explode () в $ duedate ...

$date = explode("-", $duedate);

Я получаю эту ошибку:

Warning: explode() expects parameter 2 to be string,

Поэтому мне нужно преобразовать $ duedate в строку типа.Любая помощь?Спасибо.

Ответы [ 4 ]

1 голос
/ 19 февраля 2012

$duedate - это ресурс, вам нужно использовать mysql_fetch_(something) для доступа к строке этого ресурса.(Есть несколько функций, имена которых начинаются с mysql_fetch.)

$result=mysql_query(...);
$row=mysql_fetch_assoc($result);
$duedate=$row['duedate'];

Я изменил его так, чтобы $ result был ресурсом, $ row - это строка из этого ресурса, а $duedate - этоданные, которые вы ищете.

Используйте DATE_FORMAT, как предложено @Steve в вашем коде перед этим.

0 голосов
/ 19 февраля 2012

mysql_query () возвращает ресурс, а не фактические результаты. Прочитайте примеры, чтобы понять, как правильно их использовать. Похоже, вы, вероятно, хотите сделать что-то вроде этого:

$query = sprintf('SELECT duedate FROM mtt_todolist WHERE id = %s',
             mysql_real_escape_string($id)
         );
$result = mysql_query($query);
if (!$result) {
    $message  = 'Invalid query: ' . mysql_error() . "\n";
    $message .= 'Whole query: ' . $query;
    die($message);
}

// Use result
// Attempting to print $result won't allow access to information in the resource
// One of the mysql result functions must be used
// See also mysql_result(), mysql_fetch_array(), mysql_fetch_row(), etc.
while ($row = mysql_fetch_assoc($result)) {
    $date = explode('-', $row['duedate']);
    ...
}
0 голосов
/ 19 февраля 2012

Вы можете сделать это в SQL, так что вам не придется возиться с этим в PHP: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format

Например, если вы хотите, чтобы ваша дата была отформатирована 12 апреля 2000 года, вы должны сделать:

SELECT 
  DATE_FORMAT(`duedate`, '%e %M, %Y') as `duedate`
FROM 
 `mtt_todolist`
WHERE 
  `id` = $id;

И не забудьте убедиться, что $id экранирован, чтобы не стать жертвой SQL-инъекции!

0 голосов
/ 19 февраля 2012

Вы пропускаете mysql_fetch_assoc после mysql_query.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...