2016-04-21 2 views
-1

Ich versuche Datensätze in meinem Legacy-Zugangssystem über PHP zu aktualisieren, aber auf bestimmten Spalten funktioniert es nicht. Zum Beispiel arbeitet die folgende:PHP erlaubt keine ACCESS Update auf bestimmten Spalten

$query = "UPDATE Valuations SET SalesParticulars = '" . $salesparticulars . "', 
Company = '" . $company . "' WHERE Ref=" . $ref; 

Wenn ich „Unternehmen“ auf „Name“ ändere es nicht funktioniert, obwohl Name nur eine Spalte in der Datenbank genau die gleichen wie Gesellschaft ist.

Grundsätzlich kann ich aktualisieren „Gesellschaft“, aber nicht „Name“, obwohl sie beide die gleichen Datentypen

ich diese Ausnahme erhalten sind, wie kann ich es fangen?

Fatal error: Uncaught exception 'com_exception' with message 'Source: Microsoft Access Database Engine
Description: Syntax error in UPDATE statement.' in

Das ist mein voller Code

// Create an instance of the ADO connection object 
$conn = new COM ("ADODB.Connection") or die("Cannot start ADO"); 

// Define the connection string and specify the database driver 
$connStr = "PROVIDER=Microsoft.Ace.OLEDB.12.0;Data Source=".realpath("HS_BE.accdb").";"; 

// Open the connection to the database 
$conn->open($connStr); 
$name= "gareth"; 
// Declare the SQL statement that will query the database 
$query = "UPDATE Valuations SET SalesParticulars = '" . $salesparticulars . "', 
Name = '" . $name . "' 
WHERE Ref=" . $ref; 

echo $query; 

// Execute the SQL statement and return records 
$rs = $conn->execute($query); 
+1

Haben Sie versucht, direkt die gleiche Abfrage in MS Access laufen? Funktioniert es? – user4035

+0

@ user4035 Ja, es ist seltsam –

+0

Gibt es eine Möglichkeit, den Fehler nach der Abfrage zu erhalten? – user4035

Antwort

2

Das ist, weil Namen ein reserviertes Wort in Access SQL ist.

Sie können es in Klammern wickeln wie folgt aus:

$query = "UPDATE Valuations SET SalesParticulars = '" . $salesparticulars . "', 
[Name] = '" . $name . "' WHERE Ref=" . $ref; 
+0

Das hat funktioniert, danke –