Genel ODBC sürücülerini kullanarak yer tutucular

1 Cevap php

Şu anda, ben tek tırnak & hesaba form gönderimleri peppering ediyorum Diğer çöp.

 $form_field_value= str_replace("'", "''", stripslashes($form_field_value));

Bu kullanılarak yerleştirilmesi için değerini hazırlık için:

 $insert_sql = "insert into table (field) values ('".$form_field_value."')";
 odbc_exec($conn, $insert_sql);


Esasen, ben bu ekleme / güncelleme tablolar için yer tutucular kullanmak istiyorum.

I tanımlama güvenilir $par1 ve $par2 değişmez olarak ve bu yürütme

$insert_sql = "insert into table (field,txt) values (?,?)";
odbc_exec($conn, $insert_sql, $par1, $par2);

Bu başarısız oldu ve bana bu hatayı verdi:

Uyarı: odbc_exec () [function.odbc-exec]: SQL error: [Microsoft] [ODBC SQL Server sürücüsü] 10 hattı üzerine test.php olarak COUNT alanı yanlış veya sözdizimi hatası, SQL devlet SQLExecDirect içinde 07001

Satır 10 exec ifadedir.


Ben bu odbc sürücüsü ile tutucular kullanmak için sözdizimi bulamıyorum. Herhangi bir öneriniz?

$conn bağlantı değişken iyi çalışıyor.


EDIT:

Son girişimi, hala başarısız - odbc_execute () tanımsız bir fonksiyonudur. Ben odbc_exec kullanmak zorunda ()

$par1="eggs";
$par2="milk";

$insert_crs = "insert into table (field,txt) values (?,?)";
$stmt = odbc_prepare($conn, $insert_sql); 

odbc_exec($stmt, array($par1, $par2));

1 Cevap

http://www.php.net/manual/en/function.odbc-prepare.php göre, daha sonra SQL deyimi yürütme hazırlamak olmalı ve dobc_execute için üçüncü bağımsız değişken için yeni bir dizi () sağlamak olmalıdır:

<?php
$a = 1;
$b = 2;
$c = 3;
$stmt    = odbc_prepare($conn, 'CALL myproc(?,?,?)');
$success = odbc_execute($stmt, array($a, $b, $c));
?>

Bu sizin kod gibi bakmak gerektiği anlamına gelir:

$insert_sql = "insert into table (field,txt) values (?,?)";
// the following line is new, compared to your code
$stmt = odbc_prepare($conn, $insert_sql); 
// note that the following line wraps $par1 and $par2 with array()
// struck out version was incorrect - copy/paste error :(
odbc_exec($stmt, $insert_sql, array($par1, $par2));
odbc_execute($stmt, array($par1, $par2));