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";