首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql_query中的更新有时返回null

mysql_query中的更新有时返回null
EN

Stack Overflow用户
提问于 2013-01-03 08:09:27
回答 2查看 3.1K关注 0票数 0

我使用这段代码更新mysql中的记录

这是我的密码:

代码语言:javascript
复制
<?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”字符串就会被打印出来,而没有任何“结果”变量的值。

此查询总是正确工作,但有时会返回NULL

我怎么才能解决这个问题?

有个问题。

我对此查询使用事务处理。实际上,我的实际代码是:

代码语言:javascript
复制
<?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?

EN

回答 2

Stack Overflow用户

发布于 2013-01-03 08:21:19

如果mysql_query返回NULL,那么这将是PHP上的一个bug。您如何知道它实际上是返回空的?

对于update语句,mysql_query只应返回TRUE或FALSE。所以您的错误检查代码是可以的。至于找出出了什么问题,您必须调用其他函数-- mysql_error()会给您提供一个关于哪里出错的信息。因此,在false块中打印mysql_error()的值。如下所示:

代码语言:javascript
复制
 echo 'failed. SQL Err: '. mysql_error()

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

票数 1
EN

Stack Overflow用户

发布于 2013-01-03 08:12:56

在本例中,$result只是一个资源,它不包含原因。

对于其他类型的SQL语句,INSERT、UPDATE、DELETE、DROP等,mysql_query()在成功时返回TRUE,错误时返回FALSE。

来源:PHP手册

因此,您只能在update查询中从它获得TRUE / FALSE。它不会告诉你原因。但是正如您所说的,当您的服务器过于拥挤时,原因可能是“太多连接”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14135120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档