MySQL запрос иногда ничего не возвращает - PullRequest
0 голосов
/ 21 июля 2009

У нас есть функция, используемая в нашем приложении PHP / MySQL, которая возвращает базовую информацию о конфигурации, она содержит простой запрос выбора и выглядит следующим образом:

public function getConfigurationValue($field)
{
    $res = mysql_query("SELECT `cfg_value` FROM `ls_config` WHERE `cfg_name` = '".mysql_real_escape_string($field)."'");
    $cfg = htmlspecialchars(mysql_result($res,0));
    return $cfg;
}

Эта проблема, с которой мы сталкиваемся, заключается в том, что иногда, казалось бы, наугад, этот запрос вызывает ошибку mysql для mysql_result, говорящую, что «предоставленный аргумент не является допустимым ресурсом результата mysql». В нашей отладке мы определили, что это не потому, что поле $ не передается. По существу, по причине, по которой мы не можем определить, что совершенно правильный запрос завершается неудачно и не возвращает результатов, что приводит к пустому набору результатов и последующей ошибке. Если бы ошибка произошла из-за сбоя подключения mysql, сценарий умер бы задолго до этого. Кроме того, эта функция может вызываться 50-100 раз при загрузке некоторых страниц, но при каждой загрузке происходит сбой только один раз.

Пожалуйста, дайте мне знать, если вам нужна какая-либо другая информация для решения этой проблемы.

Спасибо.

1 Ответ

5 голосов
/ 21 июля 2009

поиск php «предоставленный аргумент не является допустимым ресурсом результата mysql» показывает, что для получения реальной ошибки вам нужно вызвать mysql_error, и ошибка, которую вы получите, связана с запрос ЛОЖЬ - это значение не является допустимым ресурсом результата mysql.

т.е. Короче говоря, у вас есть что-то вроде:

$res = FALSE; # should contain the mysql result but does not, due to error.
$cfg = htmlspecialchars(mysql_result($res,0)); # the attempt to call mysql_result on invalid argument errors out.

Итак, вы хотите использовать что-то вроде этого:

$query = "SELECT * FROM cats WHERE id=$id";
$qr1 = mysql_query ($query)
      or die ("Query failed: " . mysql_error() . " Actual query: " . $query);

Возможно, вы захотите попробовать и посмотреть, что говорит основное сообщение об ошибке.


Учитывая, что ошибка «сервер MySQL исчез», этому может быть множество причин - эта статья будет хорошим началом для исследования. Поиск предлагает также некоторые ошибки, связанные с php и стеком, поэтому похоже, что вам, возможно, потребуется отладить его при более внимательном рассмотрении.

Возможно, попытайтесь продублировать настройку в другом окне, а затем начните экспериментировать с версиями / настройками и посмотрите, соответствует ли какой-либо из уже сообщенных сценариев вашему случаю. К сожалению, кажется, нет простого ответа на этот вопрос.

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