ここにいる多くの人々によって提案されているように、私は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 構文にエラーがあります。1 行目の '"tbl_staff"' 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。
$table、'$table'、および {$table} だけを試しましたが、行を文字通り $table として読み取り、変数に置き換えないようです。PDOステートメントには別のルールがありますか? PDOを理解するのに少し迷っているので、これが単純なものである場合はお詫びします