Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Select在PHP中不起作用,但在mysql服务器本身上起作用_Php_Sql_Select_Pdo - Fatal编程技术网

SQL Select在PHP中不起作用,但在mysql服务器本身上起作用

SQL Select在PHP中不起作用,但在mysql服务器本身上起作用,php,sql,select,pdo,Php,Sql,Select,Pdo,我有这个功能 public function populate($id) { $pdo = new PDOConfig(); $sql = "SELECT * FROM ".$this->table." WHERE `id` = :id"; $q = $pdo->prepare($sql); $q->execute(array(":id"=>$id)); $resp = $q->fetchAll(); foreac

我有这个功能

public function populate($id) {
    $pdo = new PDOConfig();

    $sql = "SELECT * FROM ".$this->table." WHERE `id` = :id";

    $q = $pdo->prepare($sql);
    $q->execute(array(":id"=>$id));
    $resp = $q->fetchAll();
    foreach ($resp as $row) {
        foreach ($row as $key=>$value) {
            if(!is_int($key))
                $this->$key = html_entity_decode($value, ENT_QUOTES);
            if($value == null) {
                $this->$key = null;
            }
        }
    }

    $pdo = null;
    unset($pdo);
}
这很有效。 当我试着

$sql = "SELECT * FROM ".$this->table." WHERE `id` = :id";
进入

它坏了。但是,当我在终端内的sql中运行此函数时,一切正常。该表具有字段生命周期,并且可以确保查询能够正常工作。我错过了什么


谢谢

您没有在这里发布PHP代码生成的真实SQL查询和$id变量的值。这让我觉得你还没有真正检查过它们。因此,当您说“我在终端内的sql中运行此函数,但一切正常”时,您可能指的是您打算创建的sql查询。因此,问题在于PHP代码不会发送您认为它会发送的查询和值

故障排除步骤:

就在$q->executearray:id=>$id;之前;,检查$sql和$id的值。您可以使用或选择调试器。在第一种情况下,不要信任浏览器渲染的视图;相反,请使用“查看源代码”菜单

将这些值与预期结果进行比较

确保PDO子类捕获错误。最简单的方法是故意产生SQL语法错误,例如XSELECT*FROM


您在这里既没有发布PHP代码生成的真正SQL查询,也没有发布$id变量的值。这让我觉得你还没有真正检查过它们。因此,当您说“我在终端内的sql中运行此函数,但一切正常”时,您可能指的是您打算创建的sql查询。因此,问题在于PHP代码不会发送您认为它会发送的查询和值

故障排除步骤:

就在$q->executearray:id=>$id;之前;,检查$sql和$id的值。您可以使用或选择调试器。在第一种情况下,不要信任浏览器渲染的视图;相反,请使用“查看源代码”菜单

将这些值与预期结果进行比较

确保PDO子类捕获错误。最简单的方法是故意产生SQL语法错误,例如XSELECT*FROM


它坏了。你犯了什么错误?好问题,奇怪的是,没有。更重要的是,解析在SQL本身内部中断。如果我打印r$resp,它只会在解析的中途停止并中断脚本。我没有使用mysql\u connect…然后尝试使用:print\r$pdo->errorInfo;显示错误。它将中断。你犯了什么错误?好问题,奇怪的是,没有。更重要的是,解析在SQL本身内部中断。如果我打印r$resp,它只会在解析的中途停止并中断脚本。我没有使用mysql\u connect…然后尝试使用:print\r$pdo->errorInfo;显示错误。
$sql = "SELECT * FROM ".$this->table." WHERE `id` = :id AND `life` > 0";