Anfänge in MySQL Wert suchen + ausgeben

Constan

Mitglied
Als Anhang liegt meine DB (MySQL) dabei. Ich möchte das er sich den Trennbalken (catid1) sucht und dann daraus mir nur die orderid (die Dynamisch ist und sich laufend ändert) ausgibt. Dann soll die orderid in eine Variable damit ich sie in der nächsten abfrage wieder einsetzten kann, denn er soll diese zahl minus 1 rechnen. Danach soll er dann einfach diese Zahl die jetzt in $trenn sein müsste in der Abfrage von $sql reintun weil ja alle Orderid von 0 - einen vor dem trenner in einen Array aufgelistet werden soll.

Nur Leider habe ich da meine Probleme bei der Variable $cache! Kann einer so lieb sein und mir da helfen? ggf. noch mal Kontrollieren ob ich nicht misgebaut habe.

Danke

Der Ursprüngliche Select war SELECT * FROM categories ORDER BY orderid
PHP:
	public function getList() {
                $cache = 'SELECT catid=1 FROM categories WHERE ?';
                $trenn = $cache - 1;
		$sql = "SELECT * FROM categories WHERE orderid>=0 and orderid<='".$trenn."'";
		$recordSet = mysql_query($sql,$this->conn);
		$results = array();
		while($row = mysql_fetch_assoc($recordSet)) {
			$results[] = $row;
		}
		return $results;
	}
 

Anhänge

  • Unbenannt-1.jpg
    Unbenannt-1.jpg
    74 KB · Aufrufe: 24
Zuletzt bearbeitet:
PHP:
public function getList() {
        $sql1 = 'SELECT orderid FROM categories WHERE catid=1';
        $recordSet1 = mysql_query($sql1, $this->conn);
        $row1 = mysql_fetch_assoc($recordSet1)
        $trenn = $row1['orderid'] - 1;

        $sql2 = "SELECT * FROM categories WHERE orderid>=0 and orderid<='".$trenn."'";
        $recordSet2 = mysql_query($sql,$this->conn);
        $results = array();
        while($row = mysql_fetch_assoc($recordSet)) {
            $results[] = $row;
        }
        return $results;
    }
 
Danke dein Vorschlag hat mich viel weiter gebracht. Habe mal dein Code etwas abgeändert. Die abfrage mit "WHERE orderid>=0 and orderid<='".$trenn."'";" klappte nicht so ganz deswegen habe ich da auch ein ORDER und ein LIMIT gesetzt jetzt Funktioniert alles supper. Danke für deine Hilfe.



PHP:
	public function getList() {
         $sql1 = 'SELECT orderid FROM categories WHERE catid=1';
         $recordSet1 = mysql_query($sql1, $this->conn);
         $row1 = mysql_fetch_assoc($recordSet1);
         $trenn = $row1['orderid'] - 1;

        $sql = "SELECT * FROM categories ORDER BY orderid LIMIT 0, $trenn";
		$recordSet = mysql_query($sql,$this->conn);
		$results = array();
		while($row = mysql_fetch_assoc($recordSet)) {
			$results[] = $row;
		}
		return $results;
	}
 
sry das ich noch mal störe aber ich habe ein weiteres Problem.

was ist hierran falsch?
Ich möchte eine Variable einfuhgen, nur tut er das nicht wenn ich den Namen Manuell eingebe funktioniert es aber nicht so, ist meine Schreibweise falsch?
PHP:
	public function updateList($orderArray) {        
		$orderid = 1;
		foreach($orderArray as $catid) {
			$catid = (int) $catid;
           $userinfo = mxGetUserData();
            $test2 = $userinfo['uname'];
			$sql = "UPDATE $test2 SET orderid={$orderid} WHERE catid={$catid}";
			$recordSet = mysql_query($sql,$this->conn);
			$orderid++;
		}
	}
 
Zuletzt bearbeitet:
Ich rate bei der Fehlersuche mit Datenbank immer zu einem einer Ausgabe von mysql_error(), zum Beispiel wie folgt:

PHP:
$sql = "UPDATE $test2 SET orderid={$orderid} WHERE catid={$catid}";
$recordSet = mysql_query($sql,$this->conn) or die(mysql_error();

Sollte beim Ausführen des SQL Querystrings in mysql_query() ein Fehler auftreten (zum Beispiel falsche Syntax im SQL Querytring wird die Fehlermeldung vom MySQL System dort abgelegt, bzw kann mit mysql_error() abgerufen werden.

Zu deinem aktuellen Problem:
Dein SQL Querystring sagt:
Aktualisiere die Tabelle $test2, setze orderid....
Was ist $test2? Steht in $test2 wirklich der gewünscht Tabellenname drin?
Dann weiter mit deinem Query.
"UPDATE $test2 SET orderid={$orderid} WHERE catid={$catid}";
Es ist eine etwas ungewöhnliche Schreibweise mit den {} Klammern. Ich gehe davon aus, das dort Integer Werte in den Variablen stehen. Falls nicht, dann müsstest du im SQL String die Variablen als String markieren mit SingleQuotes ' '
Also
"UPDATE $test2 SET orderid='$orderid' WHERE catid='$catid'";
Wobei ich die {} Klammern weglassen würde.

Ein anderer Weg den Fehler zu finden wäre, du machst ein echo $sql; bevor mysql_query() ausgeführt wird. Diesen Query kannst du dir dann ansehen und siehst den Fehler vielleicht direkt. Ansonsten kannst du diesen kopieren und in phpMyAdmin testen. Um genauer den Fehler zu finden würde ich diese Ausgabe des echo $sql benötigen, aber versuch erstmal das andere zu testen.
 
hi

ja in den Klammern kommen Integer Werte rein danach wird dann eine Array List erstellt und die Werte abgerufen. Ja es kommt wirklich der Tabellenname an mit echo zeigt er ihn mir, beim lesen der Tabelle Fuktioniert das ja auch nur beim Schreiben (UPDATE) leider nicht.

Jedoch wenn ich ihm vorher sage $test2 = "Name"; dann macht er es wieder aber mit $userinfo = mxGetUserData(); und $test2 = $userinfo['uname']; tut er das nicht also stimmt da was nicht. Aber wie gesagt beim Lesen macht er es ja.

PHP:
//Daten Lesen

public function getList() {
    $userinfo = mxGetUserData();
    $test2 = $userinfo['uname'];
		$sql = "SELECT * FROM $test2 ORDER BY orderid";
		$recordSet = mysql_query($sql,$this->conn);
		$results = array();
		while($row = mysql_fetch_assoc($recordSet)) {
			$results[] = $row;
		}
		return $results;
	}
 
Zurück