【发布时间】:2014-07-24 10:37:37
【问题描述】:
好的,我有以下代码:
$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 和脚本中一切正常。所以,我可以假设数据库连接正常,查询正常,一切正常。再次添加条件 '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={$this->p_id}' 替换 'p_id=1' ...什么都没有,空的,没有结果。将 'pn_id=2' 替换为 'pn_id={$this->pn_id}' 和 'vg_id=3' 替换为 'vg_id={$this->vg_id}',它工作正常...所有值都是整数并设置 > 0,没有字符串。这让我很生气......!
【问题讨论】:
标签: php mysql phpmyadmin conditional-statements