2016-05-31 13 views
5

私は、PHPの変数(nomecardapioBD、変数:nomecardapioBDで受信して記録したもの)を渡すアプリケーションを持っています。これは、すべての行と列を選択するテーブル名です。PHP、MY SQLのエラークエリ

しかし、投稿経由で変数を受け取るには、予定を立てられません。誰も私のコードのこの部分で何が間違っていたのか教えていただけますか?

$query = "Select * FROM :nomecardapioBD "; 

    $query_params = array(
     ':nomecardapioBD' => $_POST['nomecardapioBD'] 
    ); 

//execute query 
try { 
    $stmt = $db->prepare($query); 
    $result = $stmt->execute($query_params); 
} 
catch (PDOException $ex) { 
    $response["success"] = 0; 
    $response["message"] = "Database Error!"; 
    die(json_encode($response)); 
} 

// Finally, we can retrieve all of the found rows into an array using fetchAll 
$rows = $stmt->fetchAll(); 
+2

PDOでは、表名と列名をパラメータで置き換えることはできません。 – Saty

答えて

2

PDOでは、テーブル名と列名をパラメータで置き換えることはできません。そのまま使用してください

$table=$_POST['nomecardapioBD']; 
$query = "Select * FROM $table"; 


//execute query 
try { 
    $stmt = $db->prepare($query); 
    $result = $stmt->execute(); 
} 
catch (PDOException $ex) { 
    $response["success"] = 0; 
    $response["message"] = "Database Error!"; 
    die(json_encode($response)); 
} 
+1

それもうまくいった、本当にありがとう –

+0

SQLインジェクションにつながる安全でない答えを投稿するのではなく、この質問を閉じるために投票してください。 –

3

どうしたらいいですか?

$query = "Select * FROM " . $_POST['nomecardapioBD']; 


//execute query 
try { 
    $stmt = $db->prepare($query); 
    $result = $stmt->execute(); 
} 
catch (PDOException $ex) { 
    $response["success"] = 0; 
    $response["message"] = "Database Error!"; 
    die(json_encode($response)); 
} 

// Finally, we can retrieve all of the found rows into an array using fetchAll 
$rows = $stmt->fetchAll(); 

また、何らかの入力サニタイズも必要です。

+1

本当にありがとうございました –

+0

この回答はSQLインジェクションそのものです。それがなぜそんなにあきらめられたのか不思議。 –

+0

@YourCommonSense業界標準のソリューションを提供するつもりはありませんでした。私はOPに彼の問題を解決する方法を示した。最後の声明を出して、彼が危険にさらされていることを示唆しました。 – hashbrown

関連する問題