2017-09-27 6 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면에서 무언가가 변경되어야하는 경우. ORDER는 SQL 예약어입니다 그러나,

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

이 쿼리는 테이블 이름으로 ORDER을 사용

+0

'Order'이 예약 된 용어 (내가 "4D"에 익숙 해요, 생각)입니다 :

이 테크 팁을 참조하십시오. 이것이 mysql 서브 시스템이라면,'INSERT INTO \'order \'' – chris85

+0

을 잊지 않는 것이 좋을까요? -> array (": dealer"=> "Test Dealer", ": customer"=> "고객 테스트") – YaatSuka

+1

@YaatSuka PDO는 바인딩에 콜론을 자동으로 추가합니다. – chris85

답변

1

제공하는 쿼리는 SQL 예약어를 사용합니다. 당신이 4D의 구조 편집기의 표 Inspector에서이 표에서 본다면

이 같은 것을 볼 것입니다 :
enter image description here

당신은 SQL을 통해이 테이블에 액세스 할 수 없습니다, 당신은 그것을 이름을 변경해야합니다. Tech Tip: Guidelines for SQL compatible field names

+0

예약어 사용을 피하기 위해 테이블 ​​이름을 AppOrds로 변경 했으므로 지금은 "INSERT INTO AppOrds (dealer, customer) VALUES (: dealer, : customer)" "가 있습니다. 불행히도 나는 여전히 같은 오류가 발생하고 있습니다. – Tyler

관련 문제