ВЫБЕРИТЕ * ИЗ других результатов, затем ВЫБЕРИТЕ 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 * работает нормально? Я не могу использовать это, я должен использовать имена столбцов.

Любая помощь будет признательна.

Спасибо.

Author: JeeJee Studio, 2015-06-11

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.

Ссылка(ссылки):

 4
Author: Funk Forty Niner, 2017-05-23 12:30:00