WebWork Magazin - Webseiten erstellen lassen, Online Medien, html

Webhoster, Webhosting Provider und Domain registrieren

Home | Registrieren | Einloggen | Suchen | Aktuelles | GSL-Webservice | Suleitec Webhosting
Reparatur-Forum | Elektro forum | Ersatzteilshop Haushalt und Elektronik



Im Homepage und Webhosting-Forum --- Problem: Mehrfach-Ouery mit php an mysql senden. mysql 3.23, php 4.2.1

Scripte und Programme für PHP, MYSQL. Diskussionen zur Programmierung im Web. Fragen zu CMS, Blogsoftware, Shops, Newsletter und vielen weiteren Scripten.

Forum » PHP & MySQL » Problem: Mehrfach-Ouery mit php an mysql senden. mysql 3.23, ... - 21 Dez 2024 Antworten
im Forum für Webhosting Homepage gefunden:
Problem: Mehrfach-Ouery mit php an mysql senden. mysql 3.23, php 4.2.1
elster
Otto-Normal-Poster
Threadstarter




Beiträge: 61

Hallo,
weiß jemand, wie ich eine Mehrfach-query mit einer
Funktion nach MYSQL bekomme?
Funktion ist aus phpmyadmin 2.2.6: PMA_splitSqlFile(&$ret, $sql, $release)
read_dump.php

Der Query sieht so aus:

$sql = "CREATE TEMPORARY TABLE tmp
(artikel INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL,
preis DOUBLE(16,2) DEFAULT '0.00' NOT NULL);
LOCK TABLES shop read;
INSERT INTO tmp SELECT artikel, MAX(preis)
FROM shop
GROUP BY artikel;
SELECT shop.artikel, haendler, shop.preis
FROM shop, tmp
WHERE shop.artikel=tmp.artikel AND shop.preis=tmp.preis";

weiter gehts mit

$release = "3.23.39";
$result = mysql_query(PMA_splitSqlFile(&$ret, $sql, $release))or die($sql.'
'.mysql_error());

hier kommt leider der Fehler:
Fehler in der Syntax bei '1' in Zeile 1 ... (In MySql-Front gibts keinen Fehler!)
>>>>> Woher der Syntaxfehler???
weiter im Code mit:

if(!$result) echo "--- nix ---";
while($print2 = mysql_fetch_row($result)) {
echo "q-> : ".$print2[0]."
"; }
echo "\n";
$sqlfin = "UNLOCK TABLES;
DROP TABLE tmp";
mysql_query(PMA_splitSqlFile(&$ret, $sqlfin, $release));

>>>>> Was kann man für &$ret eintragen/übergeben? Welchen Parameter?


Kann mir jemand helfen?
Danke, Jörg

  Profil   Editieren   Zitieren
subjective
Forenheld




Beiträge: 844

Du kannst mit Sicherheit die Rückgabe von PMA_splitSqlFile() nicht in mysql_query() verwenden. Ich vermute da kommt nur true/false oder halt die Anzahl. $ret ist sicher eine Variable die nach der Funktion ein Array mit den SQL-Anweisungen enthält.

Das & wird übrigens eigentlich nur in der Deklaration - nicht im Aufruf verwendet.

---
Weaverslave

  Profil   Website   Editieren   Zitieren
elster
Otto-Normal-Poster
Threadstarter




Beiträge: 61

Hi subjective,
Super! Stimmt. Danke!

es klappt aber noch nicht ganz. Jetzt:
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in
Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in

aus dem Code:
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16:
PMA_splitSqlFile(&$ret, $sql, $release);
       $result = mysql_query($ret[0]);
       $result .= mysql_query($ret[1]);
       $result .= mysql_query($ret[2])or die($ret[0]."
".$ret[2]."
" .$ret[3]."

".$sql.'
'.mysql_error()); if(!$result) echo "--- nix ---"; while($print2 = mysql_fetch_row($result)) { echo "q3-> : ".$print2[0]."
"; } echo "\n"; $sqlfin = "UNLOCK TABLES; DROP TABLE tmp"; PMA_splitSqlFile(&$ret, $sqlfin, $release); mysql_query($ret[0]); mysql_query($ret[1]) or die("
++ ".mysql_error()); mysql_free_result($result); mysql_close($link);


bei den abschließenden letzten beiden querys bin ich mir unsicher, da ich
nicht weiß, wie ich sie zusammenhängend auszeichnen soll ...

ebenso subjektive Grüße,
Jörg
(jetzt hab ichs mit dem Code/BB-Tags endlich geschnallt - hoffentlich ...)

  Profil   Editieren   Zitieren
subjective
Forenheld




Beiträge: 844

$result .= mysql_query() kann nicht funktionieren. Die Rückgabe von mysql_query() ist immer eine Resoure-ID, also der Identifier für ein Ergebnis im Speicher. Der Operator .= ist ein String-Append. Die Ids werden als Strings zusammengefügt. Die Variable enthält also am Ende keine Resource-ID, sondern einen String.

Du solltest mit einer Schleife über das Array $ret gehen und nacheinander die einzelnen SQL-Queries ausführen. Damit mußt du Fehlerbehandlung und Ausgabe auch nur einmal schreiben.

---
Weaverslave

  Profil   Website   Editieren   Zitieren
elster
Otto-Normal-Poster
Threadstarter




Beiträge: 61

mmh - Danke! Auch für die Kommentare!
zwei Fragen (Fehler) habe ich noch:

1. Das 7-teilige query-Beispiel ist ja aus:
http://www.mysql.com/.../example-Maximum-column-group-row.html
In MySQL-Front: die ersten 5 durchgespielt erzeugt die tmp-Tabelle
und mit query 6-7 entferne ich sie danach wieder.?

Wenn ich die beiden Schritte (wie unten) mit php mache,
gibts ein:
>> Tabelle 'tmp' bereits vorhanden.
Woher kommt das?


2. Ist das mysql_free_result unten notwendig? Wie sollte ein Abschluß aussehen?
>> Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in

Grüße, Jörg
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22:
$sql2 = " ... ";
$release = "3.23.39";
     PMA_splitSqlFile(&$ret, $sql2, $release);
         while (list(, $value) = each ($ret))
              foreach ($ret as $value)                 {
                 $result = mysql_query($value) or die("
no query: ".mysql_error()); } if(!$result) echo "--- nix SELECT ---
" or "
++nix SELECT ".mysql_error(); $print2 = mysql_fetch_array($result); echo "sql-> : ".$print2[0]." - ".$print2[1]." - ".$print2[2]."
"; $sqlfin = "UNLOCK TABLES; DROP TABLE tmp"; PMA_splitSqlFile(&$ret, $sqlfin, $release); while (list(, $value) = each ($ret)) foreach ($ret as $value) { $result = mysql_query($value) or die("
no DROP: ".mysql_error()); } if(!$result) echo "--- nix DROP ---
"; mysql_free_result($result); mysql_close($link);

  Profil   Editieren   Zitieren
subjective
Forenheld




Beiträge: 844

mysql_free_result() macht Sinn, wenn du ein gültiges Ergebnis hast und außerdem danach noch weiteren PHP-Quellcode ausführst. Am Ende der Scriptausführung räumt PHP selbst auf.



---
Weaverslave

  Profil   Website   Editieren   Zitieren
 

Antworten
Forum » PHP & MySQL » Problem: Mehrfach-Ouery mit php an mysql senden. mysql 3.23, ...

Aktuelle Beiträge zur Hilfe im Forum für Homepage - Problem: Mehrfach-Ouery mit php an mysql senden. mysql 3.23, php 4.2.1 im Forum Homepage Hosting AntwortenLetztes Posting
Cybersicherheit für Unternehmen
in "PHP & MySQL"
3 18.11.2024 14:05 von Gaswer
Wirtschaftslage in der Ukraine
in "PHP & MySQL"
3 22.10.2024 15:04 von Gaswer
Rangliste (Ohne Mysql) (Kompliziertes Ordner System)
in "PHP & MySQL"
3 19.07.2021 06:00 von newtopblog
kleines problem mit phpadmin
in "PHP & MySQL"
5 11.04.2021 22:22 von Zavylon
Counter mit PHP
in "PHP & MySQL"
4 22.03.2021 16:29 von Robeni
Fehlermeldung beim Importieren der Datenbank in phpmyadmin
in "PHP & MySQL"
0 02.08.2019 22:14 von iFuchs
CMS für Online Shop
in "PHP & MySQL"
18 26.05.2019 13:29 von raiserle
Regestrierungproblem
in "PHP & MySQL"
3 28.11.2018 13:20 von norbertofahey
PHP Datum ausgeben?
in "PHP & MySQL"
1 19.10.2018 10:04 von Klaus1973
PHP befehl ausführen
in "PHP & MySQL"
11 16.08.2018 09:08 von Klaus1973
Visual Composer selber programmieren?
in "PHP & MySQL"
0 22.01.2017 23:45 von Redji



Besucher : 8143324    Heute : 547     Gestern : 558     Online : 339     21.12.2024    17:05      0 Besucher in den letzten 60 Sekunden        
Nach oben