我只是按照这里的一群人的建议转向 PDO :)
这是当前有效的代码
<?php
$table = "tbl_staff";
$all = $database->find_by_sql('SELECT * FROM tbl_staff'); echo '<pre>';
echo "<b> Find by SQL</b></br>";
print_r($all);
echo '</pre>';
?>
public function find_by_sql($sql) {
$this->query($sql);
$rows = $this->resultset();
return $rows;
}
public function query($query){
$this->stmt = $this->dbh->prepare($query);
}
public function resultset(){
$this->execute();
return $this->stmt->fetchAll(PDO::FETCH_ASSOC);
}
public function execute(){
return $this->stmt->execute();
}
这样一切都按预期工作并返回所有 tbl_staff 详细信息。
但是我想更改表名以从这样的变量中提取名称
<?php
$table = "tbl_staff";
$all = $database->find_by_sql('SELECT * FROM "'.$table.'"'); echo '<pre>';
echo "<b> Find all rows </b></br>";
print_r($all);
echo '</pre>';
?>
这将返回语法错误或访问冲突的服务器错误:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“tbl_staff”附近使用正确的语法
我只尝试了 $table、'$table' 和 {$table} 但它似乎将该行从字面上读取为 $table 而不是用变量替换。PDO 语句有不同的规则吗?我对掌握 PDO 有点迷失,如果这是一个简单的问题,我深表歉意