php - 带有准备好的语句的 PDO bindParam() 不起作用

标签 php mysql pdo

好的,这是问题所在:

这个有效:

$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();

我究竟做错了什么?它甚至不会抛出异常

谢谢大家!

另外,这是完整的代码

<?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() 变量为 bound as a reference .

一个字符串 can't be passed by reference .

下面的东西可以通过引用传递:

Variables, i.e. foo($a)

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

References returned from functions

尝试使用 bindValue()

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

关于php - 带有准备好的语句的 PDO bindParam() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19902078/

相关文章:

php - 现场维护中。如何重定向访问者?

php - 解析错误: syntax error, unexpected '<' in/home/future/public_html/modules/mod_mainmenu/tmpl/default.php on line 84

php - 将事务用于具有相关结果的查询

php - 恢复mysql数据库报错

php - 没有选择 : Cannot execute queries while other unbuffered queries are active (INSERT INTO/ANALYZE TABLE/BEGIN TRANSACTION)

php - MySQL 变量和 PDO

php - 如何让 Zend Studio 像 NetBeans 7.1 那样格式化 PHP 代码?

php - 在数组中使用 TwitterOAuth

mysql - 使用 Laravel Fluent 在 MySQL 数据库中搜索可变数量的术语

sql - 相同的数据,两种不同的存储方式