2013-04-22 2 views
1

PHP에서 ODBC를 사용하여 UPDATE 문에 매개 변수를 바인딩하려하지만 SQL 문이 실패하고 저의 삶에 대해 왜 작동하지 못합니까? 나는 인터넷 검색을 시도했지만 MySQLi 및 PDO의 좋아하는 것과 반대로 PHP에서 ODBC를 사용하는 것에 관한 정보는 거의없는 것으로 보입니다.PHP 변수를 ODBC SQL UPDATE 문에 바인딩합니다.

매개 변수 바인딩에서 찾은 대부분의 예제는 SELECT 문을 사용하지만 차이를 만들 수 없다는 것을 알 수 있습니다. 가장 가까운 대답은 here on stackoverflow입니다. 내가 볼 수있는 한 그들은 내가하고있는 일을하고 있지만 오류가 계속 발생합니다. 최악의 내가하려고 수있는 최악에 오면 내가 그렇게 바인딩 매개 변수를 제거 할 때

Warning: odbc_execute(): SQL error: [Microsoft][ODBC Driver Manager] SQL data type out of range, SQL state S1004 in SQLBindParameter in C:\xampp\htdocs\work\ajaxdd.php on line 44 

코드는 작동 : 여기

$updQuery = "UPDATE Demographic SET dmg_FirstName=? WHERE dmg_ID=?"; 
$update = odbc_prepare($connect, $updQuery); 

$fname = $_POST['firstname']; 
$pID = 145100007; 
$updResult = odbc_execute($update, array($fname, $pID)) or die (odbc_errormsg()); 

나는 위의 코드에 점점 계속 오류 발생 : 여기 내 코드입니다 할 수있는 한 최선을 다해 데이터를 위생적으로 처리하지만 분명히 바람직하지 않습니다.

+1

오류 메시지 [여기] (http://odbc.net/api/index.shtml?SQLGetTypeInfo)를 보면, 사용중인 ODBC 드라이버의 버그 일 수 있습니다. PHP가 사용하고있는 data * type * 식별자가 귀하의 실제 값이 아닌 거부되었습니다). ODBC 준비 문은이 점에서 모든 것이 문자열로 묶여 있다는 점에서 매우 제한적입니다. 이상적으로 특정 RDBMS에 PHP API/드라이버를 사용하는 것이 가능합니까? – DaveRandom

+0

불행히도 이것이 사실 인 것처럼 보입니다. PHP 드라이버가있는 4D SQL 서버에 연결해야하지만 날짜가 오래되었습니다. 버려진 것 같습니다. 최근 PHP 버전에서 작동 할 드라이버를 실제로 찾을 수 없습니다. – Roy

+0

PDO ODBC를 사용해 볼 수 있습니까? http://php.net/manual/en/ref.pdo-odbc.php – silkfire

답변

0

이는 아마도 정수 열이 허용하는 것보다 높은 ID를 삽입하려한다는 것을 의미합니다. 이것이 가장 먼저 적용되는지 확인하십시오. dmg_ID 유형은 무엇입니까? 145100007은 오히려 높은 숫자이므로 이것이 범인이라고 의심됩니다.

+0

응답 해 주셔서 감사합니다.하지만 불행히도 이것이 범인이 아닌 것 같습니다. 길이가 문제가되지 않도록 긴 INT입니다. 테스트로서 ID를 제거하고 다른 문자열 필드로 업데이트하도록했지만 동일한 오류가 발생했습니다. – Roy