【问题标题】:PDO BindParam and BindValue not workingPDO BindParam 和 BindValue 不起作用
【发布时间】:2017-07-16 18:58:32
【问题描述】:

我已尝试查找,但找不到我的代码不起作用的原因。

这是我无法开始的工作 - 查询没有返回任何内容,实际上处理在执行时停止。

如果我对 execute 中的值进行硬编码,它可以工作:

$CID = $_POST [ 'loginPageCID' ];
$LID = $_POST [ 'loginPageLID' ];
$PWD = $_POST [ 'loginPagePwd' ];

require_once('connectdb.php');

$sql = "

    SELECT u.*, c.cname, c.cstatus
    FROM t_users u, t_customers c
    WHERE u.cid = ?
    AND c.cid = u.cid
    AND u.login_id  = ?
    AND u.pwhash = ?

    ";

$stmt = $conn->prepare ( $sql );

$stmt->execute (array(1, 'su1', 'hello'));

$row = $stmt->fetchAll();

上面的它可以工作,但是如果我尝试使用变量,执行似乎会默默地失败:

$CID = $_POST [ 'loginPageCID' ];
$LID = $_POST [ 'loginPageLID' ];
$PWD = $_POST [ 'loginPagePwd' ];

require_once('connectdb.php');

$sql = "

    SELECT u.*, c.cname, c.cstatus
    FROM ids_users u, ids_customers c
    WHERE u.cid = ?
    AND c.cid = u.cid
    AND u.login_id  = ?
    AND u.pwhash = ?

    ";

$stmt = $conn->prepare ( $sql );

$stmt->bindParam(1, $CID, PDO::PARAM_INT);
$stmt->bindParam(2, $LID, PDO::PARAM_STR);
$stmt->bindParam(3, $PWD, PDO::PARAM_STR);

$stmt->execute (); // fails here

$row = $stmt->fetchAll();

编辑:

connectdb.php如下:

$conn;

try {
    $conn = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    }
catch(PDOException $e)
    {
    echo "Error: " . $e->getMessage();
    }

【问题讨论】:

  • 你有enabled exceptions吗?如果是这样,什么都不应该默默地失败。
  • @tadman - 添加了用于创建问题连接的代码。
  • 仔细查看您返回的结果对象。仔细检查您的错误日志是否有任何通知。
  • 注意:echo "Error: " . $e->getMessage(); - 确保您不要在生产中使用该代码。该消息可能包含密码(虽然我不确定)。
  • $stmt->execute (); // fails here - 你怎么知道它在那里失败了?

标签: php mysql pdo bindparam


【解决方案1】:

我遇到了同样的问题,我在这篇文章中找到了解决方案:

PDO - bindParam not working

在第二个答案中,用户建议避免使用 bindParam 或 bindValue 函数,因为 PDO 已经有一种更短的方法来动态地将参数分配给 SQL 查询。

【讨论】:

    猜你喜欢
    • 2015-06-23
    • 2011-04-13
    • 2014-07-28
    • 1970-01-01
    • 2013-01-03
    • 2011-02-11
    • 2013-02-15
    • 2014-08-20
    相关资源
    最近更新 更多