2016-12-22 2 views
1

Ich aktualisiere mit mysql über ODBC Filemaker Tabelle.
Wenn ein Feld enthält O'Reilly oder example'two erhalte ich diese Fehlermeldung:Aktualisieren von Filemaker Pro über ODBC mit MYSQL

Warnung: odbc_exec(): SQL-Fehler: [Filemaker] [Filemaker] FQL0001/(1:80):
Es gibt ein Fehler in der Syntax der Abfrage., SQL-Status 42000 in SQLExecDirect in C: \ fm_1.php in Zeile 49

und die Verwendung von addslashes() funktioniert nicht.

danke!

dies ist mein Code:

<?php 
$conn = odbc_connect("DSN=Server;Database=TEST;UID=odbc;PWD=1234", "odbc", "1234"); 
if ($conn) 
    echo "\nConnection established."; 
else 
    die("\nConnection could not be established."); 

$result = odbc_exec($conn, "SELECT ID_MH, MH_Name FROM myTable WHERE MH_Name LIKE '%EXAMPLE'"); 
while ($row = odbc_fetch_array($result)) { 

    $ID_MH = $row["ID_MH"]; 
    $MH_Name = $row["MH_Name"]; 

    // do something 

    $MH_Name = addslashes($MH_Name); 
    $update = "UPDATE myTable SET MH_Name='$MH_Name' WHERE ID_MH=" . $ID_MH;  
    $data_update = odbc_exec($conn, $update); 

} 
odbc_close($conn); 
?> 
+1

Ist MySQL tatsächlich relevant? Der gepostete Code scheint nur über ODBC mit der FMP-Datenbank zu arbeiten. –

+0

Die richtige Lösung für dieses Problem ist die Verwendung von 'odbc_prepare()/odbc_execute()' anstelle von 'odbc_exec()' mit Variablen in Ihrer SQL-Anweisung. Sie sollten jedoch überprüfen, ob FMP vorbereitete Anweisungen unterstützt. https://stackoverflow.com/questions/5713837/correct-way-to-escape-input-data-before-passing-to-odbc –

Antwort

0

versuchen zu fliehen, anstatt addslashes der Verwendung:

"UPDATE myTable SET MH_Name = \" $ MH_Name \ "WHERE ID_MH =". $ ID_MH;

Verwandte Themen