关于prepare()的致命错误

时间:2017-09-12 23:43:47

标签: php mysql pdo

我一直在尝试简化我的PHP代码,并且很难弄清楚为什么我的php函数不能按设计工作:

在这种情况下,我正在尝试卡拉OK目录的艺术家数据库:$ db =一个PDO连接,$ ta是一个艺术家表。

功能:

function getRow($q, $pr = []){
    $stmt = $db->prepare($q);
    $stmt->execute($pr);
    return $stmt->fetch(PDO::FETCH_OBJ);
}

呼叫:

$st = getRow("SELECT * FROM $ta WHERE id=?" , ["313"]);

当我运行此代码时,我收到一条错误消息,指出在非对象上存在非法调用prepare函数。

有趣的是,当我重新格式化我的代码时,它有效,但我不明白为什么它不能如上所述。

工作代码:

function getRow($q, $pr = []){
    $stmt = ($q);
    $stmt->execute($pr);
    return $stmt->fetch(PDO::FETCH_OBJ);
}

工作电话:

$st = getRow($db->prepare("SELECT * FROM $ta WHERE id=?"), ["313"]);
echo $st->prefix.' '.$st->fname.' '.$st->artist.'<br>';

使用本地服务器:Ampps和PHP 5.5

哦,艺术家的记录313恰好是:比利乔尔。 :) 任何想法都将不胜感激。

0 个答案:

没有答案