【问题标题】:MySQL-query returns empty results adding a valid condition (only in script, not in phpmyadmin)MySQL-query 返回空结果添加有效条件(仅在脚本中,不在 phpmyadmin 中)
【发布时间】: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


    【解决方案1】:

    $this->pn_id 必须是 '{$this->pn_id}'。如果那是一个字符串,你必须使用花括号并且不要忘记你的引号。也许很愚蠢,但我也假设您在class 内使用$this。 public $pn_id; 也必须有一个初始值。如果是public,您可以在调用class 的new 实例之后分配一个值,然后再运行上面的代码应该包含的任何方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-06
      • 2014-03-23
      • 2021-12-20
      • 2018-06-04
      • 1970-01-01
      • 2011-11-15
      相关资源
      最近更新 更多