mysql_result () ошибка происходит внезапно

0

Недавно я перестроил свой сайт, и теперь я получаю эту ошибку:

Предупреждение: mysql_result(): предоставленный аргумент не является допустимым ресурсом результата MySQL в /home/xx/public _html/asdf.com/comsel.php в строке 28

Предупреждение: mysql_result(): предоставленный аргумент не является допустимым ресурсом результата MySQL в /home/xx/public _html/asdf.com/comsel.php в строке 29

Предупреждение: mysql_result(): предоставленный аргумент не является допустимым ресурсом результата MySQL в /home/xx/public _html/asdf.com/comsel.php в строке 30

Предупреждение: mysql_result(): предоставленный аргумент не является допустимым ресурсом результата MySQL в /home/xx/public _html/asdf.com/comsel.php в строке 31

Эти строки выглядят следующим образом:

mysql_connect($dbhost,$dbuser,$dbpass)
or die("Error: Failed to connect to database");

mysql_select_db($dbname)
or die("Error: Failed to select databse");

$query = "SELECT * FROM foxlose ORDER BY RAND ( ) LIMIT 1";

$result = mysql_query($query);



$title = mysql_result($result,$i,"title");
$link = mysql_result($result,$i,"link");
$nomen = mysql_result($result,$i,"name");
$text = mysql_result($result,$i,"text");


mysql_close();

Последние четыре строки перед mysql_close(); являются строками 28-31.

Только вот что: эти строки были одинаковыми в старой версии моего сайта, и они работали. Я не могу понять, что изменилось. Код также отлично работает, когда я использую свой компьютер в качестве сервера и размещаю его локально.

Любая идея, что эта ошибка пытается мне сказать?

Изменить: добавлено все mysql в документе.

  • 0
    Можете ли вы сказать нам версию PHP и MySQL, которую вы используете? Были ли сделаны какие-либо обновления для них? Также фактический код нарушения может быть выше. Не могли бы вы дать нам распечатку, когда вы начинаете MySQL Connect?
  • 1
    Вы, вероятно, не хотите, чтобы ваши данные для входа в MySQL были в открытом виде ...
Показать ещё 5 комментариев
Теги:

3 ответа

1
Лучший ответ

Попробуйте удалить пробел после RAND:

$query = "SELECT * FROM foxlose ORDER BY RAND() LIMIT 1;

  • 0
    Это было оно! Огромное спасибо. Оглядываясь назад, я использовал другой метод выбора случайной записи в предыдущей версии; Я просто подумал, что это такая семантическая проблема, которую не нужно было упоминать. Я, должно быть, использую на своем компьютере версию mysql, отличную от той, что есть у моего веб-хостинга.
  • 3
    Просто обратите внимание, что на рабочем сервере вы можете переосмыслить использование RAND (), поскольку это может быть дорогостоящей операцией. Не существует элегантных решений, но может быть более эффективно (хотя и не проще) получить количество строк и рандомизировать с помощью PHP между 1 и числом строк и выполнить LIMIT $ rand, 1, чем использовать mySQLs RAND
5

Мне кажется странным, что вы закрываете соединение с базой данных:

mysql_close();

а затем вы используете

$variable = mysql_result(...);

Как правило, если вы хотите узнать причину ошибки, используйте функцию mysql_error.

  • 0
    MartyIX прав, добавьте mysql_close () внизу, после всех запросов
  • 1
    Не согласен. MySQL Close просто закрывает соединение. Его результаты уже хранятся в переменной. Mysql_result никак не зависит от mysql_close. В идеале он должен использовать mysql_fetch_array или fetch_assoc для производительности, но в любом случае не следует искать открытое соединение для анализа набора переменных.
Показать ещё 7 комментариев
0

Здесь вы можете сделать несколько вещей.

  • Проверьте, действительно ли установлено соединение mysql_query. Кроме того, вы можете убедиться, что соединение передается путем передачи его в запрос mysql.

то есть.

mysql_query($query, $connction);
  1. Кроме того, Томас Клейсон указал, что вы получаете результаты. Если результатов нет, mysql_result выдаст ошибку

  2. Убедитесь, что mysql_select_db (при условии, что вы используете это), правильно подключается к базе данных.

  3. В зависимости от версий и т.д. вам может понадобиться точка с запятой, чтобы закрыть оператор mysql

то есть.

$query = "SELECT * FROM foxlose ORDER BY RAND () LIMIT 1;";

Большая часть этого была взята у других людей с подобными проблемами. полный кредит (и больше идей) здесь: http://www.daniweb.com/forums/thread26425.html

Ещё вопросы

Сообщество Overcoder
Наверх
Меню