mysqli执行查询不起作用(没有错误)

时间:2013-11-08 12:54:35

标签: php mysql mysqli

在我的代码中,我使用mysqli预处理语句来执行2个UPDATE查询 执行UPDATE的函数($this->db是正确连接到DB的mysqli对象):

public function Update($query, $values)
{       
    if(empty($values)) return false;

    $this->db->query("SET NAMES UTF8");
    $stmt = $this->db->prepare($query);

    var_dump($stmt);

    $types = '';
    $vals = array();
    foreach ($values as $key => $value) 
    {
        $types .= $value['type'];
        if(strnatcmp(phpversion(),'5.3') >= 0) $vals[$key] = &$values[$key]['value'];
        else $vals[$key] = $values[$key]['value'];
    }

    var_dump($vals);
    // var_dump($types);
    call_user_func_array("mysqli_stmt_bind_param", array_merge(array($stmt, $types), $vals));       // binding parameters to query

    var_dump($stmt);

    if(!$stmt->execute())
    {
        print_r($stmt->error);          
        return false;
    }

    $stmt->close();
    return true;
}

然后在我的脚本中调用此函数:

$this->db->Update('UPDATE contact SET coupon_id=? WHERE adi=?', 
                  array(
                   'coupon_id'=> array('type'=>'s', 'value'=>$coupon_number),
                   'adi'=> array('type'=>'i', 'value'=>$adi)
                  )
);

$this->db->Update('UPDATE coupon SET uses_count=uses_count+1 WHERE id=?', 
                  array(
                    'id'=> array('type'=>'i', 'value'=>$coupon_number)
                  )
);

在我的本地主机上一切正常,但它在我的虚拟主机上有一些奇怪的行为:
1)只执行一个更新(更好的说 - 我不知道另一个是否被执行,但绝对数据库没有更新)
2)当我var_dump mysqli_stmt对象(在prepare()之后或execute()之后,相同的结果)时,它是空的(对于BOTH更新,也适用于正常工作的那个):

object(mysqli_stmt)#11 (0) {
}  

在我的localhost上,我可以看到带有相应值的完整对象变量(affected_rows,insert_id,...)
3)当我使用旧的mysql_query运行这个非工作更新查询时 - 它正常工作

最后 - $stmt->errors$stmt->execute()返回true没有错误。

我真的很沮丧所有这些东西,所以任何建议都会受到赞赏,而不是

0 个答案:

没有答案
相关问题