gpt4 book ai didi

php - PDO BindParam 和 BindValue 不起作用

转载 作者:行者123 更新时间:2023-11-29 18:37:54 25 4
gpt4 key购买 nike

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

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

如果我对 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();
}

最佳答案

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

PDO - bindParam not working

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

关于php - PDO BindParam 和 BindValue 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45132289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com