SQL选择不PHP工作,但确实MySQL服务器本身
问题描述:
我有这个功能SQL选择不PHP工作,但确实MySQL服务器本身
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 = "SELECT * FROM ".$this->table." WHERE `id` = :id AND `life` > 0";
它打破。当我在终端的sql中运行这个函数时,所有的都可以正常工作。该表具有现场生活,并确保查询应该工作。我错过了什么?
感谢
答
您还没有张贴在这里既不是你的PHP代码,也没有$id
变量的值来产生真正的SQL查询。这让我觉得你没有真正检查过它们。所以当你说«我在终端里运行sql中的这个函数,但是所有工作都很好»你可能指的是你打算创建的SQL查询。因此,问题是您的PHP代码不会发送您认为它的查询和值。
故障排除步骤:
$q->execute(array(":id"=>$id));
前
权,检查的
$sql
和$id
值。您可以使用var_dump()或您选择的调试器。在第一种情况下,不要相信你的浏览器渲染视图;而是使用查看源文件菜单。将这些值与预期结果进行比较。
确保您的PDO子类捕获错误。最简单的方法是故意制造SQL语法错误,如
XSELECT * FROM
。
“It break”。你遇到了什么错误? –
很好的问题,奇怪的是,没有。它更多的是在SQL本身内解析。如果我print_r $ resp,它只是中途解析并打破脚本。 – willium
我没有使用mysql_connect ... – willium