обновление в mysql_query когда-то возвращает null

Я использую этот код для обновления записи в mysql
Это мой код:

 <?php $query = "update seeds set status='success' where id = $x"; $result = mysql_query($query); if(!$result){ echo 'failed'.$result; print_r($result); }else{ echo 'successfully'; } ?> 

всегда successfully распечатывается.
Но когда сервер переполнен, строка «failed» печатается без какого-либо значения для переменной «result».
Этот запрос всегда работает правильно, но когда-то возвращает NULL .
Как я могу это исправить?


есть проблема.
Я использую транзакцию с этим запросом. на самом деле мой фактический код:

 <?php . . . $QUERY_TRANSACTION = mysql_query('START TRANSACTION'); if(!$QUERY_TRANSACTION){ echo "error 101" ; exit; } $seed_query = "INSERT INTO seeds VALUES('','$username','$theTime','در انتظار')"; $seed_result = mysql_query($seed_query); if(mysql_affected_rows()!=1){ $QUERY_TROLLBACK = mysql_query('ROLLBACK'); echo "error 102"; exit; } $seed_id = mysql_insert_id(); $_SESSION['SEED_ID'] = $seed_id; $query_values = "(NULL,'$list_number[0]',0,$seed_id)"; for($i=1;$i<count($list_number);$i++){ $query_values .= ",(NULL,'$list_number[$i]',0,$seed_id)"; } $r_query = "INSERT INTO rc_members VALUES $query_values"; $r_result = mysql_query($r_query); if(mysql_affected_rows()<=0){ $QUERY_TROLLBACK = mysql_query('ROLLBACK'); echo "error 103"; exit; } $QUERY_COMMIT = mysql_query('COMMIT'); //-------------- $QUERY_TRANSACTION = mysql_query('START TRANSACTION'); if(!$QUERY_TRANSACTION){ echo "error 104" ; exit; } $s_status = the_process($list_number,$m,$seed_id); if($s_status == 'successful_proc'){ $s_query = "UPDATE seeds SET status='انجام شده' WHERE id=$seed_id"; $s_result = mysql_query($s_query); //----------------logg file $filename = "debug.txt" ; $filepointer =fopen($filename ,"w") ; fwrite($filepointer , print_r($s_result,true)) ; fclose($filepointer) ; //----------------------- if(!$s_result){ echo "error 105".$s_result; exit; } $QUERY_COMMIT = mysql_query('COMMIT'); echo 'successfuly process'; }else{ $QUERY_TROLLBACK = mysql_query('ROLLBACK'); echo 'error 106'; exit; } $QUERY_COMMIT = mysql_query('COMMIT'); ?> 

что «успешно» всегда распечатывается. но когда-то «ошибка 105» напечатана.

может быть, транзакция является причиной этой ошибки?

что обновление в db выполняется, но возвращает null?

Если mysql_query возвращает NULL, это будет ошибкой PHP. Откуда вы знаете, что он действительно возвращает NULL?

Для операторов обновления mysql_query должен возвращать только TRUE или FALSE. Таким образом, ваш код проверки ошибок в порядке. Что касается выяснения того, что пошло не так, вам придется вызвать другую функцию – mysql_error () даст вам сообщение о том, что пошло не так. Поэтому напечатайте значение mysql_error () внутри вашего ложного блока. Как это:

  echo 'failed. SQL Err: '. mysql_error() 

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

$ result в этом случае – это просто ресурс, он не содержит причины.

Для других типов операторов SQL INSERT, UPDATE, DELETE, DROP и т. Д. Mysql_query () возвращает TRUE при успешном завершении или FALSE при ошибке.

Источник: Руководство по PHP

Таким образом, вы можете получить TRUE / FALSE из своего запроса на обновление. Это не скажет вам причину. Но, как вы сказали, это происходит, когда ваш сервер переполнен, поэтому разум, вероятно, «слишком много соединений»,