Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
SQL-Abfrage abspeichern... [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
SQL-Abfrage abspeichern...


 
langerxxx
04-01-2002, 00:16 
 
Hallo,

ich möchte eine SQL-Abfrage in einer MySQL-Tabelle abspeichern, um sie später wieder auszulesen. Die Abfrage ändert sich mit den Einstellungen des Nutzers.

Leider kann ich die Abfrage nicht speichern, einfache Worte wie 'test' lassen sich ohne probleme mit den Einstellungen speichern. Also scheint es wohl an den Einstellungen in der MySQL-Tabelle zu liegen, der PHP-Teil sollte so weit in Ordnung sein.
Die Tabelle heißt 'userdata', die Spalte heißt 'mydates' und ist vom Typ CHAR.
Den Code habe ich mal gepostet, hoffentlich kann mir jemand helfen.

...

#Zusammensetzen der SQL-Abfrage.

$result = mysql_query("SELECT * FROM termine WHERE 1 $query_semester $query_terminart $query_person $query_zeitraum $query_suchbegriff");

$zeilen = mysql_num_rows($result);

$result = mysql_result($result, 0);

$abfrage = "SELECT * FROM termine WHERE 1 $query_semester $query_terminart $query_person $query_zeitraum $query_suchbegriff";

echo "$abfrage";


#Anzahl der passenden Datensätze

if ($anzahl > 0) {
echo "<br><br>";
echo "Ihre Suche hat $anzahl Treffer ergeben.";
echo "<br><br>";

echo "$Username";

#Speichern der spezifischen SQL-Abfrage

@mysql_query("UPDATE userdata SET mydates = '$abfrage' WHERE loginname = '$Username'") OR DIE ("Keine Eintragung in die Datenbank möglich.");

echo "<br><br>";
echo "Ihre MyDates-Einstellungen wurden erfolgreich gespeichert.";
}



else
{
echo "<br><br>";
echo "Zu ihrer Suchanfrage konnte leider kein Termin gefunden werden. Bitte versuchen sie eine andere Auswahl.";

}

...

Besten Dank im voraus!

Gruß

Daniel

 
MelloPie
04-01-2002, 00:31 
 
wie sieht denn im reintext dein sql statement aus? ich glaube eher die sql Syntax is falsch denn das eintragen sollte ganz normal funzen

 
langerxxx
04-01-2002, 00:45 
 
Hallo,

hier ein Beispiel für eine zu speicherne SQL-Abfrage:

SELECT * FROM termine WHERE 1 AND semester like '%' AND terminart like '%' AND person like '%' AND datum > 1900-01-01 AND ort like '%%'

Die reine SQL-Anfrage würde dann so aussehen:

UPDATE userdata SET mydates = 'SELECT * FROM termine WHERE 1 AND semester like '%' AND terminart like '%' AND person like '%' AND datum > 1900-01-01 AND ort like '%%'' WHERE loginname = 'test'

Den zu speichernden Teil kann ich nur in einfache Hochkommas setzen, da ich sonst einen PHP-Syntaxfehler bekommen.

Danke schon mal.

Gruß

langerxxx

 
MelloPie
04-01-2002, 00:59 
 
ja is klar die einfachen hochkommata beendest Du schon frühzeitig
nimm mal ein slash vor die kommata in deinem sql statement das du einfügen willst

 
langerxxx
04-01-2002, 09:47 
 
Was bewirkt denn dieser Slash dabei?
Wie kann ich denn Slash denn setzen, ich baue die Anfrage ja aus Variablen zusammen??

Gruß

langerxxx

 
MelloPie
04-01-2002, 10:51 
 
sorry backslash.
Du musst Dein SQL statement so aussehen lassen:
UPDATE tbl SET COL = 'SELECT \'bla\' FROM tbl2'
wenn die ' aus variablen kommen musst Du sie halt dort mit \' ersetzen
wenn du esowas machst:
UPDATE tbl SET COL = 'SELECT 'bla' FROM tbl2'
Dann gibts ein sql fehler weil das sql syntaktisch nach = beendet ist weil dort ein ' kommt

 
Titus
05-01-2002, 01:26 
 
CHAR kann maximal 255 Zeichen speichern. Ändere den Typ der Spalte besser in TEXT oder BLOB.

zum Speichern von mysql-Sonderzeichen (wie Anführungszeichen) gibt es die Funktion mysql_escape_string (http://php3.de/mysql_escape_string).

Das ist bisher deine Query zum Eintragen der Query:
mysql_query("UPDATE userdata SET mydates = 'SELECT * FROM termine WHERE 1 AND semester like '%' AND terminart like '%' AND person like '%' AND datum > 1900-01-01 AND ort like '%%'' WHERE loginname = 'test'");

So sollte das aussehen
$query = mysql_escape_string("SELECT * FROM termine WHERE 1 AND semester like '%' AND terminart like '%' AND person like '%' AND datum > 1900-01-01 AND ort like '%%'");
mysql_query("UPDATE userdata SET mydates='$query' WHERE loginname = 'test'");

@MelloPie: Die Dinger \\\ heißen Backslashes. Slashes sind die forward slashes: ///

 
langerxxx
07-01-2002, 00:33 
 
@titus
Perfekt, vielen Dank. War genau das, was mir gefehlt hat!

Gruß

langerxxx


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:16 Uhr.