[MySQL] mysql_affected_rows() geeft reeks met 1 en -1

Pagina: 1
Acties:

  • DDemolition
  • Registratie: Augustus 2003
  • Laatst online: 10-04 22:44

DDemolition

slopen is mijn lust en leven

Topicstarter
Ik heb al verschillende topics doorgelezen met het onderwerp mysql_affected_rows. Ik was er dus al achter gekomen dan mysql_num_rows() niet werkt bij een update, insert of delete statement.
De manual van php geeft als voorbeeld precies hetzelfde.

Ik krijg echter 1 1 1 1 of als het record niet ingevoegd is -1-1-1-1 door unique eigenschappen of de tabel.

Ik heb nu het volgende:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$SQLins = "INSERT ";
$SQLins .= "INTO ";
$SQLins .= "    tblresults ";
$SQLins .= "    (RES_DateTime, ";
$SQLins .= "    RES_Score, ";
$SQLins .= "    RES_UsersID, ";
$SQLins .= "    RES_GamesID, ";
$SQLins .= "    RES_PredictionsID, ";
$SQLins .= "    RES_ProcessedByID) ";
$SQLins .= "VALUES ";
$SQLins .= "    ('$now', ";
$SQLins .= "    '$score', ";
$SQLins .= "    '$strUsersID', ";
$SQLins .= "    '$strSelectedGameID', ";
$SQLins .= "    '$strPredictionID', ";
$SQLins .= "    '$gstrUserID')";
mysql_query($SQLins);
echo mysql_affected_rows();


door:
PHP:
1
2
$c = mysql_affected_rows();
echo count($c);

krijg ik 11111 terug, omdat ie dan die -1 of 1 telt 8)7

Wat doe ik fout, want officeel zou ik gewoon één waarde terug moeten krijgen. De aantal ingevoegde records dus..

PHP versie: 5.1.1
MySQL versie: 5.0.16
Database en web draaien beide op Windows 2003 Enterprise (IIS 6)

[ Voor 11% gewijzigd door DDemolition op 15-02-2006 22:14 ]

Specs: Server, WS boven, WS beneden


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 17:49

NMe

Quia Ego Sic Dico.

mysql_affected_rows() geeft gewoon een integer terug. count() gebruik je om het aantal elementen in een array te bepalen. count($c) betekent dus niks; echo gewoon $c eens.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 23:33

Creepy

Tactical Espionage Splatterer

mysql_affected_rows() geeft direct het aantal gewijzigde rows terug. Wat moet je dan nog met count() doen dan?

:w -NMe-

[ Voor 6% gewijzigd door Creepy op 15-02-2006 22:20 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • DDemolition
  • Registratie: Augustus 2003
  • Laatst online: 10-04 22:44

DDemolition

slopen is mijn lust en leven

Topicstarter
-NMe- schreef op woensdag 15 februari 2006 @ 22:18:
mysql_affected_rows() geeft gewoon een integer terug. count() gebruik je om het aantal elementen in een array te bepalen. count($c) betekent dus niks; echo gewoon $c eens.
die count was eigenlijk uit wanhoop.
Geloof me of niet, maar door echo $c; te doen krijg ik -1-1-1-1.

Dit nog maar even getest:
PHP:
1
2
3
mysql_query($SQLins);
$count = mysql_affected_rows();
echo $count;

output dus: -1-1-1-1.

Zou het een php\mysql configuratie fout kunnen zijn?

edit:
Oke, heel fijn:

mysql manual:
If you use INSERT ... ON DUPLICATE KEY UPDATE to insert a row, mysql_affected_rows() returns 1 if the row is inserted as a new row and 2 if an existing row is updated.

Ik heb wel wat unique eigenschappen staan op m'n tabel, maar zou dat de reden zijn dat ik 1 of -1 terug krijg?

[ Voor 47% gewijzigd door DDemolition op 15-02-2006 22:32 ]

Specs: Server, WS boven, WS beneden


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 17:49

NMe

Quia Ego Sic Dico.

Met alleen dat script kun je nóóit -1-1-1-1 als uitvoer krijgen. Staat het niet in een loopstructuur of include je dat stukje script soms meer dan één keer?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • DDemolition
  • Registratie: Augustus 2003
  • Laatst online: 10-04 22:44

DDemolition

slopen is mijn lust en leven

Topicstarter
-NMe- schreef op woensdag 15 februari 2006 @ 22:30:
Met alleen dat script kun je nóóit -1-1-1-1 als uitvoer krijgen. Staat het niet in een loopstructuur of include je dat stukje script soms meer dan één keer?
Nee staat geen loop in. Het stuk code is precies wat ik run.

Ik heb trouwens even de uniques uit de DB gehaald, dus dat zou het ook niet moeten zijn.

Specs: Server, WS boven, WS beneden


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:34

Janoz

Moderator Devschuur®

!litemod

Laat je hele code eens zien dan? Ik vermoed namelijk dat het stuk code gewoon meerdere keren uitgevoerd wordt (4x om precies te zijn). Probeer ook eens
PHP:
1
echo " Aantal aangepaste rows zijn '".$c."'";

ipv
PHP:
1
echo $c;

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • DDemolition
  • Registratie: Augustus 2003
  • Laatst online: 10-04 22:44

DDemolition

slopen is mijn lust en leven

Topicstarter
Janoz schreef op woensdag 15 februari 2006 @ 22:39:
Laat je hele code eens zien dan? Ik vermoed namelijk dat het stuk code gewoon meerdere keren uitgevoerd wordt (4x om precies te zijn). Probeer ook eens
PHP:
1
echo " Aantal aangepaste rows zijn '".$c."'";

ipv
PHP:
1
echo $c;
Hè verdomme, ik zit heel erg te slapen.. Krijg nu inderdaad "Aantal aangepaste rows zijn '1' in een loop.
Door die echo leek het inderdaad net of het één string was |:( .
Oplossing dus: $c++.

[ Voor 6% gewijzigd door DDemolition op 15-02-2006 22:45 ]

Specs: Server, WS boven, WS beneden

Pagina: 1