2017-09-27 3 views
1

PDOを使用して4Dからの読み込みに成功しましたが、書き込みはできません。PDOを使用して4Dに書き込む

私はデータベースに値を挿入しようとすると、私は次のエラーを取得する:ここで

SQLSTATE[HY000]: General error: 1248 Failed to execute statement.

は私のコードです:

<?php 
$dsn = 'dsn-info'; 
$user = 'user-info'; 
$pswd = 'password'; 

$db = new PDO($dsn, $user, $pswd); 
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Display PDO errors 

$statement = $db->prepare("INSERT INTO order(dealer, customer) VALUES(:dealer, :customer)"); 

$statement->execute(array(
    "dealer" => "Test Dealer", 
    "customer" => "Test Customer" 
)); 
?> 

はちょうど私に何か問題があるかどうかを把握しようとしていますINSERTステートメントまたは4D側で何かを変更して書面の許可を与える必要がある場合

+0

は 'Order'は予約語である(私は「4D」に慣れていないんだ、と思います)。これがmysqlサブシステムの場合は、 'INSERT INTO \' order \ '' – chris85

+0

とする必要があります。ダブルポイントを忘れないでください。 - > array( ":dealer" => "Test Dealer"、 ":customer" => "Test Customer") – YaatSuka

+1

@YaatSuka PDOは、バインディングにコロンを追加します。 – chris85

答えて

1

提供クエリはSQL予約語を使用しています。このクエリは、テーブル名として使用していますORDER

INSERT INTO order(dealer, customer) VALUES(:dealer, :customer) 

、しかしORDERはSQL予約語です。

使用して、4D構造エディタの表インスペクタで、この表を見ていた場合は、このような何かを見るでしょう:
enter image description here

あなたは、SQLを経由して、このテーブルにアクセスすることはできません、あなたはそれを名前を変更する必要があります。

この技術ヒントをご覧ください。 Tech Tip: Guidelines for SQL compatible field names

+0

予約語の使用を避けるために、テーブル名をAppOrdsに変更したので、今では「INSERT INTO AppOrds(ディーラー、顧客)VALUES(:ディーラー、顧客)」があります。残念ながら私はまだ同じエラーが発生しています。 – Tyler

関連する問題