|
| 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.
| |
|
|