ВЫБЕРИТЕ * ИЗ других результатов, затем ВЫБЕРИТЕ 2010,2011 ИЗ
Когда я пытаюсь получить значения из некоторых столбцов и использовать ВЫБЕРИТЕ 2010,2011 ИЗ blablatable , затем я получу только имена таблиц (проверено в браузере). Когда я использую SELECT * ИЗ blablatable , я получаю (конечно, все), но затем содержимое столбцов года отображается правильно (проверено в браузере). Теперь другие столбцы в той же таблице отображаются правильно, я использую этот php-скрипт для ввода данных в сетку данных в живом коде. Все работает нормально, за исключением столбцов года. Затем сетка данных выдает ошибку. Я не понимаю, почему он предоставляет таблицы вместо предоставления данных. Я уже использую один и тот же настроенный скрипт в Livecode, и это работает нормально. Итак, протестировали какую-то вещь, и либо это php-скрипт, либо проблема в базе данных.
Это части 2 тестовых сценариев php, которые я использую: _______ Сначала скрипт, который дает только имена таблиц__нехорошо___
$hostname_connLivecode = "localhost";
$database_connLivecode = "blabla";
$username_connLivecode = "blabla";
$password_connLivecode = "blabla";
$connLivecode = mysql_pconnect($hostname_connLivecode, $username_connLivecode, $password_connLivecode) or trigger_error(mysql_error(),E_USER_ERROR);
//2. Perform database query
mysql_select_db($database_connLivecode, $connLivecode);
$query_rsUser = ("SELECT 2010,2011 FROM blabla_table ORDER BY id");
$rsUser = mysql_query($query_rsUser, $connLivecode) or die(mysql_error());
$row_rsUser = mysql_fetch_assoc($rsUser);
$totalRows_rsUser = mysql_num_rows($rsUser);
if ($totalRows_rsUser == 0) {
echo "no data found";
}
do {
echo $row_rsUser["id"]."\t".$row_rsUser["2010"]."\t".$row_rsUser["2011"]."\n";
} while ($row_rsUser = mysql_fetch_assoc($rsUser));
?>
____________ Теперь скрипт, который дает правильный информация_____
$hostname_connLivecode = "localhost";
$database_connLivecode = "blabla";
$username_connLivecode = "blabla";
$password_connLivecode = "blabla";
$connLivecode = mysql_pconnect($hostname_connLivecode, $username_connLivecode, $password_connLivecode) or trigger_error(mysql_error(),E_USER_ERROR);
//2. Perform database query
mysql_select_db($database_connLivecode, $connLivecode);
$query_rsUser = ("SELECT * FROM blabla_table ORDER BY id");
$rsUser = mysql_query($query_rsUser, $connLivecode) or die(mysql_error());
$row_rsUser = mysql_fetch_assoc($rsUser);
$totalRows_rsUser = mysql_num_rows($rsUser);
if ($totalRows_rsUser == 0) {
echo "no data found";
}
do {
echo $row_rsUser["id"]."\t".$row_rsUser["2010"]."\t".$row_rsUser["2011"]."\n";
} while ($row_rsUser = mysql_fetch_assoc($rsUser));
?>
Кто-нибудь понимает, почему SELECT * работает нормально? Я не могу использовать это, я должен использовать имена столбцов.
Любая помощь будет признательна.
Спасибо.
1 answers
Эта часть вашего кода SELECT 2010,2011
Из руководства http://dev.mysql.com/doc/refman/5.1/en/identifiers.html
" Идентификаторы могут начинаться с цифры, но, если они не указаны в кавычках, могут состоять не только из цифр."
Заключите эти имена столбцов в галочки.
SELECT `2010`,`2011`
- Так как вы не опубликовали свое сообщение об ошибке.
Примечание: Скопируйте/вставьте его из этого ответа. Тики и обычные котировки выглядят одинаково, но не являются такой же.
Пример, который завершится неудачей:
SELECT '2010','2011'
, так как они являются обычными '
кавычками и переведены MySQL как литеральная строка.
Я вижу много вопросов, в которых ОП будет использовать код из ответа и использовать обычные кавычки, а не галочки, вместо копирования/вставки из самого кода ответа.
Сноски:
Вам следует рассмотреть возможность использования mysqli
с подготовленными заявлениями, или PDO с подготовленным заявления, они гораздо безопаснее.
-
mysql_
функции теперь устарели и будут удалены из будущих версий PHP.
Ссылка(ссылки):