anpera.net
https://anpera.homeip.net/phpbb3/

mysql_num_rows klappt nicht....
https://anpera.homeip.net/phpbb3/viewtopic.php?f=34&t=3006
Seite 1 von 1

Autor:  TruckerB [ Fr 13 Okt, 2006 21:50 ]
Betreff des Beitrags:  mysql_num_rows klappt nicht....

Ich habe einen Hack geschriben. Leider brauchte ich dafürm umbeding di efunktion mysql_num_rows. Naja, das Projekt habe ich damals ann doch auf eis gelegt. Aber nun habe ich mit nem neuen Projekt angefangen und da brauche ich wieder die Funktion, und wieder funktioniert sie nicht....
Es wird auch kein "or die" ausgegeben

Ich weis wirklich nicht weiter :cry:

Autor:  Horus [ Fr 13 Okt, 2006 22:11 ]
Betreff des Beitrags: 

Vlt gibtst du mal deine bisherige Datei hier rein und eine kleine Beschreibung was genau pasieeren soll ;)

Autor:  Lestat [ Sa 14 Okt, 2006 06:10 ]
Betreff des Beitrags: 

Wie genau verwendest du denn diese Funktion?

schon so, oder?

[php]$result = mysql_query("SELECT * FROM blablubb") or die ("Fehler: " . mysql_error());
$anz_datensaetze = mysql_num_rows($result); [/php]

Autor:  TruckerB [ Sa 14 Okt, 2006 07:06 ]
Betreff des Beitrags: 

Es geht darum, das ich einen Spielernamen eingeben kann und dann ein mysql- befehl erstellt wird mit der Accunt- id. Und wenn $i = anzahl der ergebnisse ist soll natürlich kein Or mehr in $where eingesetzt werden.

$this->bbcode_second_pass_code('', ' $result=mysql_query("SELECT * FROM accounts WHERE login LIKE '".$_POST['spieler']."'") or die(mysql_error());

if($row[acctid]=="") {
$fehler.="Achtung, Name konnte nicht gefunden werden`n";
}
$i2=1;
$count=mysql_num_rows($result);
while($row=mysql_fetch_assoc($result)) {
if($i2<=$count) {
$where.=" author='".$row['acctid']."' OR ";
} else {
$where.=" author='".$row['acctid']."' ";
}
$i2++;
}')

Autor:  Kevz [ Sa 14 Okt, 2006 09:11 ]
Betreff des Beitrags: 

Benutzt doch die LotGD Funktionen?, dort sind doch alle Funktionen bereits vorgegeben. Im Sinne "alle", bezieht sich das auf die Standart Funktionen wie z.b.: db_num_rows, db_free_result, db_fetch_assoc, usw. etc. pp.

Autor:  Darkness [ Sa 14 Okt, 2006 10:26 ]
Betreff des Beitrags: 

[php]if($i2<=$count) [/php]
müsste
[php]if($i2<$count) [/php] heißen,
weil beim letzen account dann eben $i2 genau count ist...

aber probiers am besten mal so:
da brauchste mysql_num_ros garnicht und es geht trotzdem einwandfrei^^

[php] $result = db_query("SELECT * FROM accounts WHERE login LIKE '".$_POST['spieler']."'");

if($row[acctid]=="") {
$fehler.="Achtung, Name konnte nicht gefunden werden`n";
}
$i2=1;
while($row = db_fetch_assoc($result)) {
$where.=" author='".$row['acctid']."' OR ";
$i2++;
}
$where = substr($where,0,strlen($where)-4);
[/php]
Probiers mal so, da brauchste mysql_num_rows

Autor:  Kevz [ Sa 14 Okt, 2006 11:54 ]
Betreff des Beitrags: 

Wenn dann so bitte:
[php]<?php
$sql = 'SELECT `author` FROM `accounts` WHERE `login ` LIKE "%'.addslashes(stripslashes($_POST['spieler'])).'%" ';
$result = db_query($sql) or die (db_error($sql));

if (db_num_rows($result)) {
while ($row = db_fetch_assoc($result)) {
$msg .= "{$row['author']}`n":
}
} else {
$msg = '`$`bAchtung`b, der Name konnte nicht gefunden werden!`0`n';
}

db_free_result($result);
output($msg);
?>[/php]

Ein bissel Klugscheissen am morgen tut immer gut =D

Autor:  Eliwood [ Sa 14 Okt, 2006 12:27 ]
Betreff des Beitrags: 

In LotGD nicht nötig. Werfe dazu einfach einen Blick auf die dbwrapper.php.

Zudem wäre mysql_real_escape_string() angebrachter.

Autor:  anpera [ Sa 14 Okt, 2006 13:44 ]
Betreff des Beitrags: 

Ich bin mit mysql_real_escape_string() (wie mit allen "mysql_"-Befehlen) lieber etwas vorsichtig.

Eventuell betreibt jemand LoGD mit einer anderen Datenbank, die etwas andere Anforderungen an Strings stellt, als MySQL. Da ist man mit der zugegebenermaßen etwas blöderen Konstruktion aus add- und stripslashes vielleicht besser beraten, weil man dann nur die dbwrapper.php entsprechend an die Datenbank anpassen muss, und nicht noch im Script nach für MySQL-optimierten Stellen zu suchen braucht.

Man könnte sich natürlich auch eine neue Funktion db_real_escape_string() in der dbwrapper.php definieren, um dieses Problem zu umgehen. ;)

Ok, ich kennen niemanden, der eine andere DB für LoGD verwendet, und ich vermute, dass man dafür trotzdem einiges anpassen müsste. Von daher dürfte es also fast egal sein.

Autor:  Eliwood [ Sa 14 Okt, 2006 14:40 ]
Betreff des Beitrags: 

anpera hat geschrieben:
Ok, ich kennen niemanden, der eine andere DB für LoGD verwendet, und ich vermute, dass man dafür trotzdem einiges anpassen müsste. Von daher dürfte es also fast egal sein.


Es ist so... Leider.
MySQLi geht nicht so ohne weiteres (Parameter sind anders geordnet), PostgreSQL hat eine ganz andere Art der Anmeldung, "last_insert_id" heisst da "last_oid", zudem darf man da die Spaltennamen nicht mit Backticks (`) umgeben.
Die PDO-Erweiterung kann man eh vergessen, SQLite geht auch nicht so ohne weiteres (last_insert_rowid(), sqlite_fetch_assoc gibts nicht).
MSSQL könnte gehen, jedoch gibt es, nach dem Manual, keine vergleichbare Funktion für last_insert_id. Interbase verlangt die Paramter wieder in anderer Anordnung als MySQL, Oracle verbindet ganz anders zur Datenbank (ora_login / _logoff).
ODBC schreibt Querys anders (prepare/execute).

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/