Seite 1 von 1

in SQL-Abfrage ein ' einbinden

Verfasst: 21.11.2004 22:30
von Gumfuzi
Hallo Leute,

wie kann ich bei folgendem Code

Code: Alles auswählen

$sql='INSERT INTO `phpbb_total_scores` VALUES (' . $c . ',"' . $user . '",' . $mon[$user] . ',' . $hi[$user] . ',' . $total . ')';
erzwingen, daß die Variable $user von einem ' begrenzt übergeben wird.

Beispiel:
falsch:

Code: Alles auswählen

INSERT INTO `phpbb_total_scores` VALUES (2,Spieler,10,20,300);
richtig:

Code: Alles auswählen

INSERT INTO `phpbb_total_scores` VALUES (2,'Spieler',10,20,300);
ein "\" voranstellen klappt nicht, auch nicht "'"...
Wer kann mir da einen Tipp geben?

Verfasst: 21.11.2004 22:34
von PhilippK

Code: Alles auswählen

$sql="INSERT INTO `phpbb_total_scores` VALUES ($c, '$user', {$mon[$user]}, {$hi[$user]}, $total)";
dürfte wohl das einfachste sein...

Gruß, Philipp

Verfasst: 21.11.2004 22:45
von Gumfuzi
Hallo PhillippK,

danke für die rasche Antwort, hat funktioniert, allerdings wird trotzdem nix in die DB geschrieben, auch wenn ich via phpmyAdmin reinschaue, steht nix drin, wenn ich den durch "echo" ausgegebenen SQL-Befehl per phpMYAdmin einfüge, funzt es:

Code: Alles auswählen

while($row = $db->sql_fetchrow($result))
{
	$user = $row['username'];
	if ($mon[$user] > 0 OR $hi[$user] > 0)
	{
		$c = $c + 1;
		$total = $mon[$user] * $monat + $hi[$user] * $ewig;
		if ($mon[$user] == 0) {$mon[$user] = "0";}
		if ($hi[$user] == 0) {$hi[$user] = "0";}
		$sql="INSERT INTO `phpbb_total_scores` VALUES ($c, '$user', {$mon[$user]}, {$hi[$user]}, $total)";
		echo $sql;
	}
}
woran liegt das?

Hier der ganze Code, falls nötig:

Code: Alles auswählen

$sql = 'DELETE FROM `phpbb_total_scores`';
$monat = 2;
$ewig = 5;

$sql='SELECT highscore_player, Count(*) AS Anzahl FROM `phpbb_ina_highscore` WHERE `highscore_mon` = ' . date("m", time()) . ' AND `highscore_year` = ' . date("Y", time()) . ' GROUP BY highscore_player';
if(!$result = $db->sql_query($sql)) {
	message_die(GENERAL_ERROR, 'Fehler beim Auslesen der HiScore-Informationen', '', __LINE__, __FILE__, $sql);
}

while($row = $db->sql_fetchrow($result))
{
	$mon[$row['highscore_player']] = $row['Anzahl'];
}


$sql = "SELECT * FROM " . iNA_GAMES . "
	ORDER BY game_name";
if( !$result = $db->sql_query($sql) )
{
	message_die(GENERAL_ERROR, $lang['no_game_data'], "", __LINE__, __FILE__, $sql);
}
$game_count = $db->sql_numrows($result);
$game_rows = $db->sql_fetchrowset($result);

for($i = 0; $i < $game_count; $i++)
{
	$game_id = $game_rows[$i]['game_id'];
	$game_name = $game_rows[$i]['game_name'];
		if ($game_rows[$i]['reverse_list'])
	{
		$list_type = 'ASC';
	}
	else
	{
		$list_type = 'DESC';
	}
		$sql = "SELECT * FROM " . iNA_SCORES . " 
        WHERE game_name = '" . $game_name . "' 
        ORDER BY score $list_type, date ASC";
	 if(!$result = $db->sql_query($sql))
	{
		message_die(GENERAL_ERROR, $lang['no_score_data'], "", __LINE__, __FILE__, $sql);
	}
	$score_info = $db->sql_fetchrow($result);
	$best_player[$i] = $score_info['player'];
	$arr[$best_player] = $arr[$best_player] + 1;
}

$zaehle = array_count_values($best_player);
while(list($key, $val) = each($zaehle))
{
	$hi[$key] = $val;
}

$sql = "SELECT username FROM " . USERS_TABLE . " ORDER BY username";
if( !$result = $db->sql_query($sql) )
{
	message_die(GENERAL_ERROR, $lang['no_user_data'], "", __LINE__, __FILE__, $sql);
}

while($row = $db->sql_fetchrow($result))
{
	$user = $row['username'];
	if ($mon[$user] > 0 OR $hi[$user] > 0)
	{
		$c = $c + 1;
		$total = $mon[$user] * $monat + $hi[$user] * $ewig;
		if ($mon[$user] == 0) {$mon[$user] = "0";}
		if ($hi[$user] == 0) {$hi[$user] = "0";}
		$sql="INSERT INTO `phpbb_total_scores` VALUES ($c, '$user', {$mon[$user]}, {$hi[$user]}, $total)";
		echo $sql;
	}
}

$sql = 'SELECT * FROM `phpbb_total_scores` ORDER BY total';
if( !$result = $db->sql_query($sql) )
{
	message_die(GENERAL_ERROR, $lang['no_user_data'], "", __LINE__, __FILE__, $sql);
}
while($row = $db->sql_fetchrow($result))
{
	$x = $x + 1;
	$template->assign_block_vars("total", array(
		"PLATZ" => $x,
		"NAME" => $row['player'],
		"MON_ANZ" => $row['mon_total'],
		"HI_ANZ" => $row['hi_total'],
		"TOTAL" => $row['total']
	));
}
*edit*
es wird nichtmal die Tabelle entleert... (siehe erste Zeile im Code)

Verfasst: 21.11.2004 22:48
von PhilippK
Du solltest die SQL-Abfrage auch ausführen... :roll:

Gruß, Philipp

Verfasst: 21.11.2004 22:56
von Gumfuzi
Mann bin ich ein.... - das habe ich glatt vergessen:
$db->sql_query($sql)

Danke für Deine Geduld und Deine rasche Hilfe!!!!!!!

Verfasst: 22.11.2004 13:29
von Blutgerinsel
Was soll eigentlich das bezwecken?

Code: Alles auswählen

if ($mon[$user] == 0) {$mon[$user] = "0";} 
      if ($hi[$user] == 0) {$hi[$user] = "0";}
Wenn es 0 ist auf 0 setzen :D

Verfasst: 22.11.2004 19:18
von Gumfuzi
:oops:
damit wollte ich testen, ob mySQL bei der Übergabe eine "0" braucht, oder ob es auch mit zwei Kommas ohne Wert dazwischen geht - hatte es wohl vergessen, wieder wegzulöschen... *gg*

*edit*
Doch, es hat einen Sinn!!!!!

Wenn ich die zwei Zeilen rausnehme, dann werden die Spieler ignoriert, die bei einem der Werte 0 ist - :roll: