p_id AND pn_id=$this->pn_id AND vg_id=$this-6ren">
gpt4 book ai didi

php - MySQL-query 返回空结果添加有效条件(仅在脚本中,不在 phpmyadmin 中)

转载 作者:行者123 更新时间:2023-11-30 00:11:19 25 4
gpt4 key购买 nike

好的,我有以下代码:

$sql="SELECT * FROM mytable WHERE p_id=$this->p_id AND pn_id=$this->pn_id AND vg_id=$this->vg_id";
$dump=$this->_db->query($sql);
if (PEAR::isError($dump)) die($dump->getMessage());
while ($data = $dump->fetchRow(DB_FETCHMODE_OBJECT)) {
print_r($data);
}

如果我 echo $sql 并在 phpmyadmin 中执行它,一切都很好。不幸的是,在这个脚本中,它返回 NULL。一个奇怪的问题是,如果我删除条件 'p_id=$this->p_id' ,例如:

$sql="SELECT * FROM mytable WHERE pn_id=$this->pn_id AND vg_id=$this->vg_id";

phpmyadmin 和脚本中一切都很好。因此,我可以假设数据库连接正常,查询正常,一切正常。再次添加条件 'p_id=$this->p_id' 会导致脚本中出现 NULL,并且在 phpmyadmin 中工作正常并显示预期结果。

有什么想法可以解决这个奇怪的问题吗?

编辑:

当我 echo $dump 时,它会引发以下错误消息:

PHP Catchable fatal error:  Object of class DB_result could not be converted to string

$dump 应该是一个资源,但它不是...?!?

下一次编辑:

当我 echo $sql 并将静态查询粘贴到脚本中时,一切正常:

$sql="SELECT * FROM mytable WHERE p_id=1 AND pn_id=2 AND vg_id=3";

现在我仅将 'p_id=1' 替换为 'p_id={$this->p_id}' ...什么都没有,空的,没有结果。将 'pn_id=2' 替换为 'pn_id={$this->pn_id}' 并将 'vg_id=3' 替换为 'vg_id={$this->vg_id}',它工作正常...所有值都是整数并设置 > 0,无字符串。这让我很生气......!

最佳答案

$this->pn_id 需要为 '{$this->pn_id}'。如果这是一个字符串,您必须使用大括号,并且不要忘记引号。也许很愚蠢,但我还假设您在 class 内部使用 $thispublic $pn_id; 还必须有一个初始值。如果它是 public,您可以在调用 classnew 实例之后、在运行上面代码应该执行的任何方法之前分配一个值在里面。

关于php - MySQL-query 返回空结果添加有效条件(仅在脚本中,不在 phpmyadmin 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24026245/

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