0

我已经搜索过,但没有发现任何东西对我的代码有帮助:

function getData($con, $table) {
    $stmt = $con->query('SELECT * FROM ' . $table);
    return $stmt->fetchAll(PDO::FETCH_ASSOC);
}

function getDataByUsername($con, $table, $username) {
    $stmt = $con->query('SELECT * FROM ' . $table . ' WHERE `username` = "' .     $username . '";');
    return $stmt->fetchAll(PDO::FETCH_ASSOC);
}

getData 函数工作得很好,但是当我使用 getDataByUsername 时,我得到了这个错误:

Fatal error: Call to a member function fetchAll() on a non-object in     /home/moe/www/status/inc/functions.php on line 12

第 12 行是这一行:

return $stmt->fetchAll(PDO::FETCH_ASSOC);

谢谢你的帮助,莫罗

4

3 回答 3

1

既然是,为什么不绑定变量呢?

function getDataByUsername($con, $table, $username) {
    $stmt = $con->prepare('SELECT * FROM ' . $table . ' WHERE `username` = ?');
    $stmt->execute( array($username) );
    return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
于 2013-03-29T20:25:54.663 回答
0

改变

$con->query('SELECT * FROM ' . $table . ' WHERE `username` = "' .     $username . '";');

$con->query("SELECT * FROM `" . $table . "` WHERE `username` = `" .     $username . `";");

额外的字符称为“tick”,可以在 TAB 键上方找到。

更好的:

$con->query("SELECT * FROM {$table} WHERE `username` = {$username};");

最后没有测试,但您可以通过这种方式使用内联变量。

当然要注意@Jon 的言论。

于 2013-03-29T20:18:56.150 回答
-2

问题是:性格;删除它,这是解决方案

喜欢 :

$stmt = $con->query('SELECT * FROM ' . $table . ' WHERE `username` = "' .     $username . '"');
于 2013-03-29T20:07:39.883 回答