2

可能重复:
mysql_query 中的更新有时会返回 null

updatemysql_query我的 PHP 代码中使用。在 localhost(在 xampp 中)我的代码可以正常工作,但在生产主机上,代码通常可以正常工作,但有时不会返回更新查询的结果。

如果更新失败,它必须返回 'error' 或 '0' 但它不返回任何结果。为什么?

这是我的代码:

<?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”,没有任何 $s_result 值;我尝试将 $s_result 保存在文件中,并看到没有结果保存在文件中。换句话说,$s_result 为空。谢谢

4

1 回答 1

0

MySql在没有记录影响或错误的情况下返回false的问题

您可以在查询后使用 mysql_affected_rows() 而不是

if(!$s_result){
        echo "error 105".$s_result;                 
        exit;
}

您可以使用

if(mysql_affected_rows($s_result) == -1){
        echo "error 105".$s_result;                 
        exit;
}

函数手册链接: mysql_affected_rows

于 2013-01-03T10:31:43.043 回答