Проблема с PDO, запрос не работает при использовании bindParam - PullRequest
1 голос
/ 15 мая 2011

Я не могу понять это.Это мои переменные:

$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';

Примером этой строки может быть:в 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 = что-то не так с запросом

Что я сделал не так?+ как получить более подробное сообщение об ошибке mysql из PDO?

1 Ответ

0 голосов
/ 16 мая 2011

Вы на самом деле выбрасываете исключения из вашего соединения для вас, чтобы поймать? Попробуйте это и посмотрите, если вы получаете какие-либо сообщения об ошибках:

$db = new PDO($connection_string);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...