我已经搜索过了,但没有发现任何帮助我编写代码的东西:
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);
谢谢你的帮助,moro
既然是pdo,为什么不绑定变量呢?
function getDataByUsername($con, $table, $username) {
$stmt = $con->prepare('SELECT * FROM ' . $table . ' WHERE `username` = ?');
$stmt->execute( array($username) );
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
变化
$con->query('SELECT * FROM ' . $table . ' WHERE `username` = "' . $username . '";');
$con->query("SELECT * FROM `" . $table . "` WHERE `username` = `" . $username . `";");
额外的字符称为"勾号",可以在TAB键上方找到。
更好:
$con->query("SELECT * FROM {$table} WHERE `username` = {$username};");
没有在最后测试,但是你可以用这种方式使用内联变量。
当然要注意@Jon的评论。
问题是:字符;删除它,这是解决方案
:
$stmt = $con->query('SELECT * FROM ' . $table . ' WHERE `username` = "' . $username . '"');