【问题标题】:PDO statment problem, query doesn't work when I use bindParamPDO 语句问题,当我使用 bindParam 时查询不起作用
【发布时间】:2011-05-15 19:12:54
【问题描述】:

我想不通。这是我的变量:

$id = 1; 
$exp = 1;
$energy = 1;
$payout = rand ( 100 , 300 );

这里是查询

    $sql =  'update players set ' .
            'exp = exp + :exp, ' .
            'energy = energy - :energy, ' .
            'cash = cash + :cash ' .
            'where id = :id';

作为字符串的一个例子是:

update players set exp = exp + 1, energy = energy - 1, cash = cash + 170 where id = '1'

当我在phpmyadmin 中输入它时,它可以工作。这就是为什么我不明白为什么这不起作用:

    try
    {
        $stmt = $this->db->prepare($sql);

        $stmt->bindParam(':id', $id, PDO::PARAM_INT);
        $stmt->bindParam(':exp', $exp, PDO::PARAM_INT);
        $stmt->bindParam(':energy', $energy, PDO::PARAM_INT);
        $stmt->bindParam(':cash', $payout, PDO::PARAM_INT);

        $result = $stmt->execute();

        $stmt->closeCursor();
    }
    catch (Exception $e)
    {
        die ($e->getMessage() );
    }

    if ( !$result )
    {
        trigger_error("mysql: " . $sql, E_USER_ERROR);
        $data = array( "message" => T_gettext("Something went wrong."));
        return json_encode( $data );
    }

这会导致错误的$result = 查询有问题。

我做错了什么? + 如何从 PDO 获得更详细的 mysql 错误消息?

【问题讨论】:

标签: php mysql sql pdo


【解决方案1】:

您是否真的从连接中抛出异常以供您捕获?试试这个,看看你是否收到任何错误消息:

$db = new PDO($connection_string);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

【讨论】:

    猜你喜欢
    • 2011-11-10
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    • 1970-01-01
    • 2016-11-19
    • 1970-01-01
    相关资源
    最近更新 更多