/ Forside/ Teknologi / Udvikling / PHP / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Problem med mysql_affected_row
Fra : jop...
Vist : 326 gange
40 point
Dato : 01-09-07 16:48

Jeg kan ikke få affected rows til at give udslag.

Nogen der kan se en fejl?

include("includes/conn.php");
mysql_query("update individuel_rang set userid='$infoid', type='$type', nyrang='$nyrang', glrang='$glrang', spillernavn='$spillernavn', turn='$turn', nypoint='$nypoint', glpoint='$glpoint', niveau='$niveau' where id = 1") or die(mysql_error());
$test = mysql_affected_rows();
echo $test;

if($test == 0) {
$insertSQL = "insert into individuel_rang (userid, type, nyrang, glrang, spillernavn, turn, nypoint, glpoint, niveau)
values ('$infoid', '$type', '$nyrang', '$glrang', '$spillernavn', '$turn', '$nypoint', '$glpoint', '$niveau')";
mysql_query($insertSQL) or die(mysql_error());
}

-----------------------
Der er en række i databasen med id=1 - Så det er ikke der fejlen ligger.

 
 
Kommentar
Fra : ajuul


Dato : 01-09-07 18:36

Mit umiddelbare gæt er:
Prøv at skrive
$res = mysql_query(...)
Så har affected rows "noget at forholde sig til".
Du kunne supplere med:
$test = mysql_affected_rows($res);

/ajuul

Kommentar
Fra : jop...


Dato : 01-09-07 18:59

Jeg har fundet en løsning.

"Note: When using UPDATE, MySQL will not update columns where the new value is the same as the old value. This creates the possiblity that mysql_affected_rows() may not actually equal the number of rows matched, only the number of rows that were literally affected by the query."

As of PHP 4.3.0 (I assume, I only tried with 4.3.2), you can make mysql_affected_rows() return the number of rows matched, even if none are updated.

You do this by setting the CLIENT_FOUND_ROWS flag in mysql_connect(). For some reason, not all the flags are defined in PHP, but you can use the decimal equivalent, which for CLIENT_FOUND_ROWS is 2.

So, for example:

$db= mysql_connect("localhost", "user", "pass", false, 2);
mysql_select_db("mydb", $db);

$query= "UPDATE ...";
mysql_query($query);
print mysql_affected_rows(); // more than 0
mysql_query($query); // same query twice
print mysql_affected_rows(); // still more than 0

Du har følgende muligheder
Dette spørgsmål er blevet annulleret, det er derfor ikke muligt for at tilføje flere kommentarer.
Søg
Reklame
Statistik
Spørgsmål : 177428
Tips : 31962
Nyheder : 719565
Indlæg : 6407943
Brugere : 218877

Månedens bedste
Årets bedste
Sidste års bedste