【发布时间】: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- 你怎么知道它在那里失败了?