具有准备好的语句的PDO

具有准备好的语句的PDO

本文介绍了具有准备好的语句的PDO bindParam()无法正常工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

好,这是问题所在

这有效:

$STH = $DBH->prepare("SELECT * FROM juegos WHERE id = 1");
$STH->execute();

这不是:

$STH = $DBH->prepare("SELECT * FROM juegos WHERE id = :id");
$STH->bindParam(':id', '1', PDO::PARAM_STR);
$STH->execute();

我到底在做什么错?它甚至都不会引发异常

What in the world am I doing wrong? It doesn't even throw an exception

谢谢大家!

这也是整个代码

<?php
    try {
        $DBH = new PDO("everything is", "ok", "here");

        $DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

        $STH = $DBH->prepare("SELECT * FROM juegos WHERE id = :id");
        $STH->bindParam(':id', '1', PDO::PARAM_STR);
        $STH->execute();

        $STH->setFetchMode(PDO::FETCH_ASSOC);

        while($row = $STH->fetch()) {
            echo $row['nombre']."<br/>";
        }

        $DBH = null;

        echo "Todo salió bien";

    } catch (PDOException $e) {
        echo "Error";
    }

?>

推荐答案

使用bindParam()变量是必须作为参考.

字符串不能通过引用传递.

以下内容可以通过引用传递:

The following things can be passed by reference:

新语句,即foo(new foobar())

New statements, i.e. foo(new foobar())

从函数返回的引用

尝试使用 bindValue()

$STH->bindValue(':id', '1', PDO::PARAM_STR);

这篇关于具有准备好的语句的PDO bindParam()无法正常工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-26 07:16