Seite 7 von 7

Re: Anlegen und einfügen einer Tabelle mittels Migrations-Datei

Verfasst: 30.08.2021 10:38
von Mike-on-Tour
Fast richtig.

= bedeutet "gleich", also in diesem Falle exakt 25 WM-Punkte.

Wenn mindestens 25 WM-Punkte für die Auswahl gefragt wären, würde es >=, also "größer oder gleich 25" heißen.

Mach bitte keine Annahmen, sondern lies es in der Dokumentation zum entsprechenden Produkt nach (und auch für MySQL liefert google genügend Fundstellen für das Stichwort "logische Operatoren").
Und wenn du schon dabei bist dann google auch mal den Befehl count, dann verstehst du auch, was bei dieser Abfrage als Ergebnis überhaupt gewünscht wird.
Lesen bildet :D

Re: Anlegen und einfügen einer Tabelle mittels Migrations-Datei

Verfasst: 30.08.2021 10:43
von chris1278
Ok bei count hab ich aus dem bauch übersetzt als Zähler allgemein. Ich hab jetzt gegoogelt und da wird der wert der in einer spalte steht also wenn mehr als eine Zeile dann alle werte der spalte gezählt die eine gewisse Bedingung erfüllen. Wie gesagt ich habe das was DR.Death geschrieben hat im Groben vereinfacht versucht zu übersetzen.

Re: Anlegen und einfügen einer Tabelle mittels Migrations-Datei

Verfasst: 30.08.2021 10:49
von Dr.Death

Code: Alles auswählen

GROUP BY wm_driver
Ist nicht aus der Gruppe wm_driver
Es werden alle gefunden Zeilen nach einer bestimmten Spalte "gruppiert".

Eise sehr gute Erklärung dazu:
https://www.datenbanken-verstehen.de/sq ... by-befehl/

In meiner Tabelle $table_wm wird nach jedem Rennen pro Fahrer ID die erreichte Punktzahl eingetragen.
Wenn Verstappen bei 3 Rennen 25 Punkte bekam, in 2 Rennen 10 und in einem Rennen 6, dann würde diese Abfrage
für Verstappen eine "3" rauswerfen ( Sprich 3 Goldmedaillen )

Re: Anlegen und einfügen einer Tabelle mittels Migrations-Datei

Verfasst: 30.08.2021 12:30
von chris1278
Ok das habe ich Verstanden. Dr.Death hast du hier noch mein edit gesehen:

viewtopic.php?p=1413386#p1413386

@edit

Kannst frage vergessen. Hab probiert und es funktioniert einwandfrei.

@edit2

Also ich hab mal just for fun den einen Insert into befehl noch umgebaut variabeln für die werte einzutragen.

Kannst du mir mal sagen was du davon hälst in bezug auf aufbau und Codierung:

Code: Alles auswählen

	
	$chris1278_name = "storage_version";
	$chris1278_value = "cookie";
		
	$sql = 'INSERT INTO ' . $this->table_prefix . 'chris1278_cookie  (chris1278_name, chris1278_value) 
		VALUES ("' . $chris1278_name . '", "' . $chris1278_value . '")';
	$this->db->sql_query($sql);
Hier musste ich ein wenig probieren weil da ja zwei variablen rein müssen für die werte.

Re: Anlegen und einfügen einer Tabelle mittels Migrations-Datei

Verfasst: 30.08.2021 13:29
von Dr.Death
Nichts...

warum liest du nicht die Coding Guidelines ?

https://area51.phpbb.com/docs/dev/maste ... sql-layout

Dort findest Du die korrekten Beispiele für INSERT:

Code: Alles auswählen

$sql_ary = array(
	'chris1278_name'	=> 'storage_version',
	'chris1278_value'	=> 'cookie',
);

$db->sql_query('INSERT INTO ' . $this->table_prefix . 'chris1278_cookie ' . $db->sql_build_array('INSERT', $sql_ary));
Es hat schon seine Gründe die vorgegeben Funktionen wie z.B. sql_build_array() zu nutzen..... besonders wenn man mal anfängt Variablen zu übergeben deren Herkunft oder Inhalt nicht kennt.

Re: Anlegen und einfügen einer Tabelle mittels Migrations-Datei

Verfasst: 30.08.2021 13:34
von chris1278
Da hatteich das hier gefunden:

Code: Alles auswählen

$sql_ary = array(
	'somedata'		=> $my_string,
	'otherdata'		=> $an_int,
	'moredata'		=> $another_int,
);

$db->sql_query('INSERT INTO ' . SOME_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary));
Und versucht das versucht zu nutzen für insert aber das hat so nicht geklappt mit dieser version:

'somedata' => $my_string,

ok ich sehe du hast diese $... nach den => durch angaben in hochkommas ersetzt. Auf die Idee mus man auch erstmal kommen.

@edit

Also das hier z.B. kann ich nutzen und funktioniert:

$this->db->sql_build_array ebenso dies hier: $this->db->sql_query($sql);

aber sobald ich das hier lade: $db->sql_query oder dies hier: $db->sql_build_array

quittiert mir mein testserver mit ner fehlermeldung von wegen:
Fatal error: Uncaught Error: Call to a member function sql_build_array() on null in C:\xampp\73\htdocs\wwh\ext\chris1278\cookie\migrations\v_1_0_4.php:37 Stack trace: #0 [internal function]: chris1278\cookie\migrations\v_1_0_4->import_optin(NULL) #1 C:\xampp\73\htdocs\wwh\phpbb\db\migrator.php(714): call_user_func_array(Array, Array) #2 C:\xampp\73\htdocs\wwh\phpbb\db\migrator.php(661): phpbb\db\migrator->run_step(Array, NULL, false) #3 C:\xampp\73\htdocs\wwh\phpbb\db\migrator.php(436): phpbb\db\migrator->process_data_step(Array, Array) #4 C:\xampp\73\htdocs\wwh\phpbb\db\migrator.php(288): phpbb\db\migrator->try_apply('\\chris1278\\cook...') #5 C:\xampp\73\htdocs\wwh\phpbb\db\migrator.php(241): phpbb\db\migrator->update_do() #6 C:\xampp\73\htdocs\wwh\phpbb\extension\base.php(78): phpbb\db\migrator->update() #7 C:\xampp\73\htdocs\wwh\phpbb\extension\manager.php(231): phpbb\extension\base->enable_step(true) #8 C:\xampp\73\htdocs\wwh\includes\acp\acp_extensions.php(209): phpbb\extension\manager->enable_step('chris1278/cooki. in C:\xampp\73\htdocs\wwh\ext\chris1278\cookie\migrations\v_1_0_4.php on line 37

Dies hier lädt er ohne Probleme:

Code: Alles auswählen

	$sql_ary = array(
		'chris1278_name'	=> 'storage2_version',
		'chris1278_value'	=> 'cookie2',
	);
				
	$sql = ('INSERT INTO ' . $this->table_prefix . 'chris1278_cookie ' . $this->db->sql_build_array('INSERT', $sql_ary));
	$this->db->sql_query($sql);

Re: Anlegen und einfügen einer Tabelle mittels Migrations-Datei

Verfasst: 30.08.2021 14:38
von Dr.Death
Die Fehlermeldung bekommst du , weil das Beispiel mit $db->sql_query() arbeitet, du aber mit $this->db->sql_query()

Du hast die Grundlagen leider immer noch nicht verstanden .... :-/

'somedata' => $my_string,

Da wird eine Variable übergeben mit einem Inhalt den du nicht kennst......

Da hätte auch stehen können:

Code: Alles auswählen

$my_string = 'Mein Haus';

$sql_ary = array(
	'somedata'		=> $my_string,
);
ist das gleiche wie:

Code: Alles auswählen

$sql_ary = array(
	'somedata'		=>  'Mein Haus',
);
Dir fehlen wirklich die GRUNDLAGEN.....

Mache doch mal ALLE Übungen auf https://www.php-kurs.com/
Hier angefangen:
https://www.php-kurs.com/erstes-php-programm.htm


Ich bin fürs nächste hier erstmal raus.....