mysql_fetch_assoc () возвращает неожиданное значение - PullRequest
0 голосов
/ 16 июля 2009

Я работаю над проектом, в котором я использую mysql_fetch_assoc для возврата ассоциативного массива.

Тем не менее, я озадачен, почему он вернется TRUE

Я посмотрел страницу справочника PHP, и единственное логическое значение, которое он должен возвращать, это FALSE, и только в случае ошибки.

Хотя я использую пользовательский набор классов абстракции, в основном делает это:

$result = mysql_query("SELECT * FROM table WHERE filename = 'test1.jpg'");
var_dump(mysql_fetch_assoc($result)); // bool(true)

Кто-нибудь знает, почему он будет возвращать TRUE вместо массива?

Обновление

Что ж, после нескольких попыток я определил свою библиотеку, так как выполнение приведенного выше кода возвращает ассоциативный массив. Я не знаю, почему именно он возвращал TRUE, но сейчас я перестану делать вещи более сложными, чем они должны быть (моя проблема), и просто использую mysqli (спасибо за подсказку, Майкл) вместо моих собственных классов ActiveRecord, которые, очевидно, не работают.

Спасибо!

Ответы [ 3 ]

2 голосов
/ 01 октября 2011

Я столкнулся с тем же. Это была глупая ошибка кодирования с моей стороны.

Я начал с:

$result = mysql_query($someSql);
while($row = mysql_fetch_assoc($result)) {
   // do stuff
}

, который работал нормально. Затем я изменил его на:

$result = mysql_query($someSql);
while($row = mysql_fetch_assoc($result) && $someCondition) {
   // do stuff
}

Это интерпретируется как $row = (mysql_fetch_assoc($result) && $someCondition), что означает, что $row становится true, пока остаются строки и второе условие true.

То, что я хотел написать, было:

$result = mysql_query($someSql);
while(($row = mysql_fetch_assoc($result)) && $someCondition) {
   // do stuff
}
1 голос
/ 16 июля 2009

Начните использовать mysqli_query mysqli_fetch_assoc,. Старая версия скоро устареет - новая лучше в любом случае.

0 голосов
/ 16 июля 2009

Вы пробовали:

print_r (mysql_fetch_assoc($result));

Это может дать то, что вы ищете.

О, и глупо, var_dump () ничего не возвращает, он выводит результаты прямо как print_r ().

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