2009-11-17 18 views
0

Actuellement, je soumets des soumissions de formulaire peignant pour tenir compte des guillemets simples & autres déchets.Placeholders utilisant les pilotes ODBC génériques

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

Il est de préparer la valeur pour l'insertion en utilisant:

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

Essentiellement, je veux utiliser ces espaces réservés pour les instructions insert/mise à jour.

J'ai essayé de définir $par1 et $par2 comme littéraux et l'exécution de cette

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

Il a échoué et m'a donné cette erreur:

Attention: odbc_exec() [function.odbc-exec]: erreur SQL : [Microsoft] [COUNTRY ODBC SQL Server] COUNT champ incorrect ou erreur de syntaxe, l'état SQL 07001 dans SQLExecDirect dans test.php sur la ligne 10

La ligne 10 est l'instruction exec.


Je ne peux pas trouver la syntaxe pour utiliser avec ce pilote placeholders odbc. Aucune suggestion?

La variable de connexion $conn fonctionne correctement.


EDIT:

La dernière tentative échoue toujours - odbc_execute() est une fonction non définie. Je dois utiliser odbc_exec()

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

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

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

Répondre

1

Selon http://www.php.net/manual/en/function.odbc-prepare.php, vous devriez prépareront ensuite l'exécution de votre instruction SQL, et vous devriez fournirai un nouveau tableau pour le troisième argument à dobc_execute():

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

cela signifie que votre code devrait ressembler à:

 
$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)); 
+0

merci ... ouais je parcourais ce site et a terminé la navigation en voyant odbc_execute plutôt que d'essayer exec .... maintenant – CheeseConQueso

+0

pas bon ... J'ai essayé exec et exécuter ... je pensais que ce serait le cas – CheeseConQueso

+0

Pourriez-vous poster votre code changé? Et obtenez-vous toujours la même erreur? Et, dans le cas où vous copiez/collé mon code, j'ai fait une erreur, moi-même - correction momentanée ... – atk