このメソッドを使用して、指定したテーブルからキーの配列 (プライマリ、外部など) を取得したい:
public function getTableKeys($table){
//OBTAIN TABLE KEYS
try {
$conn = $this->db->_pdo;
$conn->beginTransaction();
$query = $this->db->_pdo->prepare('SHOW KEYS FROM :table');
$query->bindParam(':table', $table, PDO::PARAM_STR);
$query->execute();
$keys = $query->fetchAll(PDO::FETCH_ASSOC);
$conn->commit();
return $keys;
}catch (Exception $e) {
$conn->rollback();
echo 'Caught exception: ', $e->getMessage(), "\n";
return false;
}
}
問題は、スローされるエラーがあることです:
キャッチされた例外: SQLSTATE[42000]: 構文エラーまたはアクセス違反: 1064 SQL 構文にエラーがあります。1 行目の ''ps_customer'' 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。
PHPMyAdmin で SQL を手動で実行すると、一連のキーが正常に返されます。問題は、次の形式でなければならないことです。
SHOW KEYS FROM ps_customers
この形式ではありません(引用符付き):
SHOW KEYS FROM "ps_customers"
私の質問は次のとおりです。bindParam
引用符なしでSQLに挿入する必要があるが、高速な文字列であるパラメーターをどのようにすればよいですか(の使用はPDO::PARAM_INT
機能しません)。
可能な提案をありがとう、皆さん。