php - mysql_query 中的更新有时返回 null

标签 php mysql

我使用此代码来更新 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';
    }

?>

总是成功打印出来。
但是当服务器拥挤时,会打印出“失败”字符串,而“结果”变量没有任何值。
此查询始终正常工作,但有时会返回 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”。

可能是事务导致了此错误?

数据库中的更新已执行但返回 null?

最佳答案

如果 mysql_query 返回 NULL,那么这将是 PHP 上的一个错误。你怎么知道它实际上返回 NULL?

对于更新语句,mysql_query 应该只返回 TRUE 或 FALSE。所以你的错误检查代码没问题。为了找出哪里出了问题,你必须调用其他函数 - mysql_error() 会给你一个关于哪里出了问题的简介。因此,在 false block 中打印 mysql_error() 的值。像这样:

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

这样做,您可能会得到关于“记录如何更新,但返回值为 false”的线索。这不应该发生。

关于php - mysql_query 中的更新有时返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14135120/

相关文章:

php - 在php中将.csv文件导入mysql

MySQL:从 MySQL 过程调用获取结果

mysql - 如何将此类查询排除在 mysql_slow.log 之外?

mysql - 如何清空一个非常大的mysql表?

php - 2表交互 : insert, 获取结果,插入

php - 如何将这个图像预加载器实现到我的 php 文件中?

php - 格式化数字

PHP:如何检查客户端是否是本地的?

mysql - 我无法将值插入具有多对多关系的表中?

PHP mysql 到 mysqli 的迁移问题(自定义函数、程序样式)