Bin ich zu blöd? SQL-Query

balufreak

balufreak

Aktives Mitglied
Thread Starter
Dabei seit
12.10.2003
Beiträge
1.563
Reaktionspunkte
28
Hallo Leute!

Ich habe folgendes SQL Query:
Code:
UPDATE `infb_links` SET `linkname` = 'about:blank', `linkurl` = 'http://www.google.ch' WHERE `linkid` = '105' AND `userid` = '1';
UPDATE `infb_links` SET `linkname` = 'Formelsammlung', `linkurl` = 'http://www.formel-sammlung.de/' WHERE `linkid` = '124' AND `userid` = '1';
UPDATE `infb_links` SET `linkname` = 'GuitarPro Tabs', `linkurl` = 'http://www.mysongbook.com/' WHERE `linkid` = '126' AND `userid` = '1';

Dieses gibt mir folgende Fehlermeldung zurück:
Code:
Anfrage:
UPDATE `infb_links` SET `linkname` = 'about:blank', `linkurl` = 'http://www.google.ch' WHERE `linkid` = '105' AND `userid` = '1';
UPDATE `infb_links` SET `linkname` = 'Formelsammlung', `linkurl` = 'http://www.formel-sammlung.de/' WHERE `linkid` = '124' AND `userid` = '1';
UPDATE `infb_links` SET `linkname` = 'GuitarPro Tabs', `linkurl` = 'http://www.mysongbook.com/' WHERE `linkid` = '126' AND `userid` = '1';
Antwort:
You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near ';
UPDATE `infb_links` SET `linkname` = 'Formelsammlung', `link
Fehlercode: 1064

Aber nur, wenn ich das Query mit meinem eigenen PHP Script ausführe. Wenn ich es in phpMyAdmin in ein SQL Feld kopiere und dan ausführe, funktioniert es? *grml*

Ich arbeite mit der MySQL-Klasse von http://tut.php-q.net/mysql-class.html. Den Sourcecode findet ihr unter: http://scripts.php-q.net/tutorial/mysqlclass/class_mysql.php

Liegts vieleicht an Zeile 12?
PHP:
$this->_sql = trim($sql);

Greets balu
 
Ich würde die Feldnamen nicht in '' setzen, habe das noch nie so gesehen. Gleiches gilt für Integer-Werte.
 
Frage 1: Nö bist Du nicht :) Rechner sind nur pingelig :D

Frage2: probier mal durchgehend die '-Zeichen zu verwenden und nicht die ´-Zeichen, ich nehme an das hilft schon!
 
Yankee schrieb:
Ich würde die Feldnamen nicht in '' setzen, habe das noch nie so gesehen. Gleiches gilt für Integer-Werte.

An dem kanns nicht liegen, da mir phpMyAdmin diesen String bzw. Dieses Query mir so vorgegeben hat. Und bei einzelnen Querys funktioniert es auch. Nur nicht mit meheren Querys :(

bezüglich zeile 12: Es hat nichts gebracht das trim($sql) in $sql umzuändern.

EDIT: auch probiert

@Wegus:
Half leider auch nichts. Jetzt habe ich aber einen anderen Fehler:
Code:
Anfrage:
UPDATE 'infb_links' SET 'linkname' = 'about:blank', 'linkurl' = 'http://www.google.ch' WHERE 'linkid' = '105' AND 'userid' = '1';
UPDATE 'infb_links' SET 'linkname' = 'Formelsammlung', 'linkurl' = 'http://www.formel-sammlung.de/' WHERE 'linkid' = '124' AND 'userid' = '1';
UPDATE 'infb_links' SET 'linkname' = 'GuitarPro Tabs', 'linkurl' = 'http://www.mysongbook.com/' WHERE 'linkid' = '126' AND 'userid' = '1';
Antwort:
You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near ''infb_links' SET 'linkname' = 'about:blank', 'linkurl' = 'http:
Fehlercode: 1064
 
Zuletzt bearbeitet:
dann lass bitte mal die '-Zeichen bei Tabellen und Spaltennamen weg! Das ist unüblich! Mit '' werden eigentlich nur Values umschlossen und da eigentlich auch keine Zahlen ( allerdings tut es nicht weh das bei Zahlen auch zu machen).

Probier die Query nativ mit mysql ( ohne phpmyadmin). Nutze dazu das Terminal oder den Querybrowser von mysql.com ( der ist eh gut weil er die ganze Doku mitbringt). Der Browser ist noch sehr beta, für Tetsabfragen reicht er aber völlig!
 
Ich sehe auch nur die ' um Feldnamen und Tabellennamen als potentielle Fehlerquelle, wie oben schon gesagt. Ansonsten sehen die Queries vernünftig aus.
 
Wo auch immer Herr Koehntopp dieses Wissen her hat!?
Der mysql-server macht das sehrwohl ( leicht im Terminal nachzuvollziehen) geprüft mit mysql 4.1.9.
Es scheint sich also um eine PHP-Einschränkung zu handeln ( was ebenfalls noch nachzuprüfen wäre). Die pauschale Aussage SQL-Server machen so etwas nicht ist jedenfalls falsch. Man kann in SQL nicht umsonst stored procedures schreiben!
 
wegus schrieb:
Der mysql-server macht das sehrwohl ( leicht im Terminal nachzuvollziehen) geprüft mit mysql 4.1.9.

Er schreibt ja deswegen auch:
Einige SQL-Frontends (der MySQL-Kommandoprozessor, phpMyAdmin) kennen Mehrfachstatements

Mit php geht es definitiv nicht, sonst müsste ja auch phpMyAdmin die Query nicht vorher zerlegen.

Matt
 
Also bei mir sieht die Schreibweise als Beispiel immer so aus und funktioniert:

$sql_str = "UPDATE tabelle SET Menge='$frm_Menge', Artikel='$frm_Artikel', Hersteller='$frm_Hersteller'";
 
nur zur Info:
die `` um Feldnamen sind sehr wohl wichtig, wenn man zum Beispiel eine Feld Namens "to" hat, da dies sonst mit dem reservierten Wort "TO" kollidieren würde. Schaden kann es auch nicht diese immer zu verwenden.

Gunter
 
Zurück
Oben Unten