php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 15-01-2008, 15:00
hugostrange
 Newbie
Links : Onlinestatus : hugostrange ist offline
Registriert seit: Jan 2008
Beiträge: 7
hugostrange ist zur Zeit noch ein unbeschriebenes Blatt
Standard [MySQL 4.1] Query Problem

Hallo,

ich habe ein Installationsscript, das bei mir lokal läuft, aber beim externen Webhost nicht funktioniert. Bin mir ziemlich sicher das es nur am MYSQL-Code in der DB-Anfrage liegt:

PHP-Code:
    CREATE TABLE fields 
    
(
        
id INT(11AUTO_INCREMENT PRIMARY KEY
        
status INT(11),
        
title VARCHAR(255),
        
description VARCHAR(135),
        
counter INT(11),
        
path VARCHAR(255)
    ) 
Damit hat es zwar lokal funktioniert, aber womöglich liegt das ja an der Konfiguration des Webservers.

Also habe ich die zu installierende Tabelle per phpMyAdmin exportiert und nun den ausgespukten Code gegen den alten oben ersetzt. Der neue sieht so aus:

PHP-Code:
    CREATE TABLE `fields` (
        `
idint(11NOT NULL auto_increment,
        `
statusint(11) default NULL,
        `
titlevarchar(255) default NULL,
        `
descriptionvarchar(135) default NULL,
        `
counterint(11) default NULL,
        `
pathvarchar(255) default NULL,
        
PRIMARY KEY  (`id`)
    ) 
ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=
Das funktioniert dann auch, allerdings scheint mir das gleiche Problem mit allen Queries im eigentlichen Script aufzutreten, die nun allesamt nicht mehr funktionieren.

Hat jemand ne Idee woran das liegt?

Vielen Dank!

Geändert von hugostrange (15-01-2008 um 15:04 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 15-01-2008, 15:05
IchBinIch
 Registrierter Benutzer
Links : Onlinestatus : IchBinIch ist offline
Registriert seit: Apr 2003
Beiträge: 324
IchBinIch ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Naja, der erste Code sieht für meinen geschmack auch etwas unvollständig aus, Gefährlich ist natürlich, dass z.B. reservierte Wörter nicht gekennzeichnet werden...

Workaround: Tabellen lokal erstellen, exportieren und dann aufm Server importieren.
__________________
ICH BIN ICH!!!
Mit Zitat antworten
  #3 (permalink)  
Alt 15-01-2008, 15:12
hugostrange
 Newbie
Links : Onlinestatus : hugostrange ist offline
Registriert seit: Jan 2008
Beiträge: 7
hugostrange ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von IchBinIch
Naja, der erste Code sieht für meinen geschmack auch etwas unvollständig aus, Gefährlich ist natürlich, dass z.B. reservierte Wörter nicht gekennzeichnet werden...
Was fehlt denn in diesem Code? Wie gesagt - lokal funktioniert er ja... Meinst du die Angabe eines Default-Wertes? Muss man das angeben?

Und mit kennzeichnen meinst Du, es in Klammern zu setzen, wie im zweiten (von PHPmyAdmin generierten) Codeblock?

Zitat:

Workaround: Tabellen lokal erstellen, exportieren und dann aufm Server importieren.
Das habe ich ja dann so gemacht, allerdings wüsste ich schon gerne woran's liegt, um das wieder zum laufen zu bekommen.

Geändert von hugostrange (15-01-2008 um 15:14 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 15-01-2008, 15:30
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Wenn du auch die zueghörige Fehlermeldung posten würdest, dann könnten wir vielleicht auch eher helfen. Reservierte Wörter sind jedenfalls keine drin, und andere zwingende Fehler sehe ich keine.
Was IchBinIch mit auszeichnen meint, sind wahrscheinlich die Backticks. Davon würde ich allerdings abraten, denn ersten sind diese nicht portabel und zweiten verleiten sie nur zu unsauberem Design.
EDIT:

Jetzt habe ich grad noch schnell ins Handbuch geschaut und festgestellt, dass die Klammern sein müssen. Vielleicht gibts halt Versionen, die das akzeptieren, aber eigentlich gehören sie dazu.

__________________
Gruss
H2O

Geändert von H2O (15-01-2008 um 15:32 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 15-01-2008, 16:15
hugostrange
 Newbie
Links : Onlinestatus : hugostrange ist offline
Registriert seit: Jan 2008
Beiträge: 7
hugostrange ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Okay, danke schonmal für die Aufklärung was die Klammern betrifft - ich glaube ich habe diese Dinger noch nie in Scripten gesehen.

Fehlermeldung gibts keine - bis auf zwei Warungen wegen nicht definierter Variablen, was damit wohl nichts zu tun hat.

Es passiert nur einfach nichts, wenn ein Datensatz gespeichert werden soll.

Geändert von hugostrange (15-01-2008 um 16:17 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 15-01-2008, 16:16
IchBinIch
 Registrierter Benutzer
Links : Onlinestatus : IchBinIch ist offline
Registriert seit: Apr 2003
Beiträge: 324
IchBinIch ist zur Zeit noch ein unbeschriebenes Blatt
Standard

mysql_error()!
__________________
ICH BIN ICH!!!
Mit Zitat antworten
  #7 (permalink)  
Alt 15-01-2008, 16:25
hugostrange
 Newbie
Links : Onlinestatus : hugostrange ist offline
Registriert seit: Jan 2008
Beiträge: 7
hugostrange ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hoppla, thx... dachte eigentlich das meine DB-Klasse MySQL-Errors ausgibt.

Nundenn, hier die Meldung:

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 'fields (title, description, path, status, counter) VALUES ('foo' at line 1
Mit Zitat antworten
  #8 (permalink)  
Alt 15-01-2008, 16:27
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von hugostrange
Es passiert nur einfach nichts, wenn ein Datensatz gespeichert werden soll.
Willst du jetzt eine Tabelle erstellen oder Daten einfügen. Für letzteres sind eigentlich andere Befehle als CREATE TABLE vorgesehen.

Zeige mal die Abfrage, die diesen Fehler erzeugt.
__________________
Gruss
H2O
Mit Zitat antworten
  #9 (permalink)  
Alt 15-01-2008, 16:37
hugostrange
 Newbie
Links : Onlinestatus : hugostrange ist offline
Registriert seit: Jan 2008
Beiträge: 7
hugostrange ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich habe die Tabelle per PHPmyAdmin manuell angelegt - jetzt geht es darum, das im eigentlichen Script keine Queries mehr funktionieren - die vorher lokal alle liefen. Ist nur meine Vermutung, das das die gleiche Ursache hat, wie das scheitern des Installations-Scripts.

Hier die Anfrage zu der eben geposteten Fehlermeldung:

PHP-Code:
$db->query("
    INSERT INTO fields (title, description, path, status, counter) 
    VALUES ('$_POST[title]', '$_POST[description]', '$_POST[path]', '1', '0')
"
); 

Geändert von hugostrange (15-01-2008 um 16:44 Uhr)
Mit Zitat antworten
  #10 (permalink)  
Alt 15-01-2008, 17:13
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Da sind gleich mehrere Fehler drin:
  • Indizes von assotiatven Arrays sind Strings, bei dir sind es (vermutlich undefinierte) Konstanten.
  • Assotiatven Arrays müssen innerhalb von Strings entweder mit dem Verkettungs-Operator eingefügt werden, oder in {} stehen
  • Nummerische Argumente sollten nicht in Anführungszeichen stehen
Und das nächste mal gibst die evaluierte Abfrage aus, dann hättest du auch selber gesehen, dass nichts (vernünftiges) drin steht.
Dass diese Abfragen lokal gelaufen sein sollen, ist reine Erfindung.
__________________
Gruss
H2O
Mit Zitat antworten
  #11 (permalink)  
Alt 15-01-2008, 17:16
IchBinIch
 Registrierter Benutzer
Links : Onlinestatus : IchBinIch ist offline
Registriert seit: Apr 2003
Beiträge: 324
IchBinIch ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ist ja nicht so, dass ich noch nicht auf die Reservierten Wörter hingewiesen hätte, aber egal...

(ne, H20 )
__________________
ICH BIN ICH!!!
Mit Zitat antworten
  #12 (permalink)  
Alt 15-01-2008, 17:40
hugostrange
 Newbie
Links : Onlinestatus : hugostrange ist offline
Registriert seit: Jan 2008
Beiträge: 7
hugostrange ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von H2O
Indizes von assotiatven Arrays sind Strings, bei dir sind es (vermutlich undefinierte) Konstanten.
Das man die Indizes in Arrays eigentlich anders schreibt ist mir auch klar, nur wie wäre es denn in diesem Beispiel korrekt? Die Anfrage steht ja zuerst schon einmal in einfachen Klammern - als Argument der query()-Methode. Dann stehen die Values in Klammern. Wenn ich nun die Indizes wieder in einfachen Klammern schreibe, kann das ja auch nicht gehen... oder wie, oder was?

PHP-Code:
    $db->query('
        INSERT INTO fields (title, description, path, status, counter) 
        VALUES ("$_POST['
title']", "$_POST['description']", "$_POST['path']", 1, 0)
    '
); 
Zitat:

Assotiatven Arrays müssen innerhalb von Strings entweder mit dem Verkettungs-Operator eingefügt werden, oder in {} stehen
Wie sieht das genau aus? Wo finde ich denn mal Beispiele für sowas?

Zitat:

Nummerische Argumente sollten nicht in Anführungszeichen stehen
Okay, so wird die Zahl als String behandelt, aber das ist doch in PHP kein Fehler, oder?

Zitat:

Und das nächste mal gibst die evaluierte Abfrage aus, dann hättest du auch selber gesehen, dass nichts (vernünftiges) drin steht.
Wie gebe ich eine evaluierte Abfrage aus?

Zitat:

Dass diese Abfragen lokal gelaufen sein sollen, ist reine Erfindung.
Das läuft auf meiner lokalen MAMP-Installation so. Auf jeden Fall...

Geändert von hugostrange (15-01-2008 um 17:42 Uhr)
Mit Zitat antworten
  #13 (permalink)  
Alt 15-01-2008, 17:49
IchBinIch
 Registrierter Benutzer
Links : Onlinestatus : IchBinIch ist offline
Registriert seit: Apr 2003
Beiträge: 324
IchBinIch ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Lass dich von H20 mal nicht kirre machen. Er hat zwar recht, denn all das gehört zu den Grundlagen von sauberen Programmieren. Aber auf solche Grundlagen darf ich hier nicht mehr hinweisen. (sollte eigentlich auch überflüssig sein, da hat der Kropff recht.)

Und jetzt informiere dich endlich über die reservierten Wörter. Das war jetzt mein dritter und letzter Hinweis. Danke!
__________________
ICH BIN ICH!!!
Mit Zitat antworten
  #14 (permalink)  
Alt 15-01-2008, 17:56
hugostrange
 Newbie
Links : Onlinestatus : hugostrange ist offline
Registriert seit: Jan 2008
Beiträge: 7
hugostrange ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von IchBinIch

Und jetzt informiere dich endlich über die reservierten Wörter. Das war jetzt mein dritter und letzter Hinweis. Danke!
Danke, schon dabei...
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:08 Uhr.