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


MySQL-query returns empty results adding a valid condition (only in script, not in phpmyadmin)

好的,我有以下代码:

$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);
}

如果我回显$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和脚本中都很好。所以,我可以假设db连接是正常的,查询是正常的,一切都是正常的。添加条件'p_id=$this->p_id'再次在脚本中导致NULL,并且在phpmyadmin中工作良好,并显示预期的结果。

有什么办法来修复这个奇怪的掉落吗?

编辑:

当我回显$dump时,它触发以下错误消息:

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

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

下一个编辑:

当我返回$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}',它工作得很好…所有值均为整型,且set>0,无字符串。这让我很生气…!

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