PHP MYSQL相同编号、相同类型、不同结果
我有一个终生都无法解决的问题。对我来说这毫无意义,所以我想我显然错过了什么,我只是看不到它是什么 我有一个简单的脚本PHP MYSQL相同编号、相同类型、不同结果,php,mysql,pdo,Php,Mysql,Pdo,我有一个终生都无法解决的问题。对我来说这毫无意义,所以我想我显然错过了什么,我只是看不到它是什么 我有一个简单的脚本 $pid = isset($_GET['id']) ? $_GET['id'] : ''; $pcjid = delete_user($pid); try { $sth = $dbh->prepare ("SELECT aid_id FROM tbl_personcompanyitem_join WHERE pcj_id = $pcjid"); $sth
$pid = isset($_GET['id']) ? $_GET['id'] : '';
$pcjid = delete_user($pid);
try {
$sth = $dbh->prepare ("SELECT aid_id FROM tbl_personcompanyitem_join WHERE pcj_id = $pcjid");
$sth->execute ();
while($row = $sth->fetch(PDO::FETCH_BOTH)) {
$aid = $row['aid_id'];
}
} catch (PDOEXCEPTION $e) {
$err++;
write_to_log($e);
}
delete_lot($aid);
出于某种原因,在使用变量时,我的sql查询不会返回任何结果,但如果我在其中硬编码一个数字,则会返回任何结果。我已经验证了数据在要返回的数据库中,并且通过写入一个日志文件
$sth = $dbh->prepare ("SELECT aid_id FROM tbl_personcompanyitem_join WHERE pcj_id = :id");
$sth->bindParam (":id",$pcjid);
$sth->execute ();
但同样的结果
更新:针对andrewsi的评论,以下是更多的结果:
测试1:
手动设置:$pcjid=19;
将此添加到while:
while($row = $sth->fetch(PDO::FETCH_BOTH)) {
write_to_log("rowid=" . $row['aid_id']);
write_to_log('row=' . $row);
$aid = $row['aid_id'];
}
我得到以下结果:
- pcjid=19
- rowid=25
- 数组到字符串的转换
- 行=数组
- 援助=25
- pcjid=19
- 未定义变量:aid
- 援助=
在使用上面的测试2中所做的操作时,我也尝试了这个方法
$r = $sth->execute ();
write_to_log('r=' . $r);
我得到:r=1
更新:
所以为了好玩,我尝试了更多的东西
说真的,有人能看到这里发生了什么吗?它快把我逼疯了。您需要在准备语句后将参数绑定到语句:
$sth = $dbh->prepare ("SELECT aid_id FROM tbl_personcompanyitem_join WHERE pcj_id = ?");
$sth->bind_param("i", $pcjid)
$sth->execute ();
请参见u缺少参数绑定刚刚尝试绑定,但相同result@biggunn-代码是否在循环期间进入您的
?添加一个回音以进行检查。我还建议检查execute
调用的返回值,以确保它没有返回false。当我硬编码一个数字时,它会进入while循环,而不是在使用变量时。我将测试execute的返回值。@biggunn-在tbl\u personcompanyitem\u join
中,pcj\u id
列的类型是什么?我看不出有什么原因会像你所描述的那样失败,所以我不得不承认我在抓救命稻草。