2016-07-01 5 views
0

PHP PDOコマンドを実行する関数で変数を送信すると、変数が実際に存在しますが、PDOではエラーが発生します。ここでPHP PDOエラーがベースに追加中

は関数である。

public static function addMenu($name){ 
    $db = ConnectDB(); 

    var_dump($name); echo '<br />'; 

    $sql = "INSERT INTO " . self::getTableName() . " name VALUES :nameMenu"; 
    $stmt = $db->prepare ($sql); 
    $stmt->bindParam(':nameMenu', $name, PDO::PARAM_STR); 
    $stmt->execute(); 
} 

そして、ここで私が手にそのエラー:

文字列(4) "rher"

致命的なエラー:キャッチされない例外 'PDOException' [SQLSTATE [42000]:構文エラーまたはアクセス違反:1064 SQL構文にエラーがあります。 が正しい構文のために があなたのMySQLサーバーバージョンに対応していることを確認してください。 の名前は、 C:¥xampp¥htdocs¥sea¥public_html¥admin¥backend¥DB¥tablesの 'VALUES' rher '' at line 1 ' \ TypePlacesTable.php:30 スタックトレース: C:\ XAMPP \ htdocsに海\ \のpublic_html \管理\ TypePlacesTable.php \バックエンド\のDBの\テーブル(30): PDOStatement- >実行() C:\ XAMPP \ htdocs \ sea \ public_html \ admin \ backend \ index.php(18): TypePlacesTable :: addMenu( 'rher'){メイン} C:\ xampp \ htdocs \ sea \ public_html \ admin \ backend \ DBにスローされました。 \ tables \ TypePlacesTable.php オンライン

+0

ないその必要に応じて確認する必要がありますが、入れてみてください)'列名の周り名前付きparamsを囲む '()'が必要になるかもしれません。例えば'$ sql =" INSERT INTO " self :: getTableName()。 – Matt

+0

の前に、()を使用せずに試してみませんでした.SQLとデバッグエラーがあった場合は、 '' echo $ sql'を実行してデータベースに直接貼り付けてみてください。( '\' name \ ')そこに問題があれば。今後の参考のために :) – Matt

答えて

0

ああ、今働いて、私はちょうど( `、変数に対して「(」と「)」を追加し忘れそうでし

public static function addMenu($name){ 
     $db = ConnectDB(); 
     $sql = "INSERT INTO " . self::getTableName() . " (name) VALUES (:nameMenu)"; 
     $stmt = $db->prepare ($sql); 
     $stmt->bindParam(':nameMenu', $name, PDO::PARAM_STR); 
     $stmt->execute(); 
    } 
関連する問題