[SQL] PHP geeft num_rows = 1, Sequel Pro = 0

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Carharttguy
  • Registratie: Juli 2010
  • Laatst online: 04-07 23:09
Hallo iedereen

Ik ben wat aan het proberen in PHP. Ik heb nu dit:

code:
1
2
3
4
$sql = 'SELECT shortid, originalvalue, value, DATE_FORMAT(timestamp,"%d/%m/%Y %k:%i") AS niceDate FROM Coupons WHERE Referral_id = "' . $id . '" ORDER BY timestamp';
echo $sql . '<br />';
$result = mysql_query($sql);
echo count(mysql_num_rows($result));


Dat geeft mij:
SELECT shortid, originalvalue, value, DATE_FORMAT(timestamp,"%d/%m/%Y %k:%i") AS niceDate FROM Coupons WHERE Referral_id = "47a8f723-a80f-11e6-a944-002590f97464" ORDER BY timestamp
1
Als ik die SQL kopieer en plak in Sequel Pro krijg ik dit: (en dit klopt ook)

Afbeeldingslocatie: https://i.imgur.com/cVmaQ3Q.png

Hoe kan dit?

[ Voor 15% gewijzigd door Carharttguy op 18-11-2016 21:42 ]


Acties:
  • +1 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 06-10 22:29
ten eerste en als meest belangrijke:
op: http://php.net/manual/en/function.mysql-query.php
staat een hele grote warning. Die staat er omdat dat wat je nu aan't doen ben best eng is. Zie hier ook op wikipedia het e.e.a. over Wikipedia: SQL injection

dan het probleem dat je nu hebt.
Je bouwt een query, en vuurt die af met 'mysql_num_rows'

Daar komt al een getal uit. (wat 0 zal zijn)
Dat getal tel je met count (je telt het aantal dingen in een lijst met count) en het aantal getallen in jou 'lijst' is 1.

Het resultaat is dus 1.

Voor de volgende keer:
Probeer te debuggen door je code simpel te maken.
Dus probeer eerst een query als 'select * from table'

Dan weet je in ieder geval zeker dat daar geen fout in zit.
Sluit dingen uit, denk systematisch

[ Voor 16% gewijzigd door BasieP op 18-11-2016 21:46 ]

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Geen functies gebruiken waarvan je niet weet wat ze doen helpt. ;) http://php.net/count

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


Acties:
  • 0 Henk 'm!

  • Carharttguy
  • Registratie: Juli 2010
  • Laatst online: 04-07 23:09
BasieP schreef op vrijdag 18 november 2016 @ 21:45:
ten eerste en als meest belangrijke:
op: http://php.net/manual/en/function.mysql-query.php
staat een hele grote warning. Die staat er omdat dat wat je nu aan't doen ben best eng is. Zie hier ook op wikipedia het e.e.a. over Wikipedia: SQL injection

dan het probleem dat je nu hebt.
Je bouwt een query, en vuurt die af met 'mysql_num_rows'

Daar komt al een getal uit. (wat 0 zal zijn)
Dat getal tel je met count (je telt het aantal dingen in een lijst met count) en het aantal getallen in jou 'lijst' is 1.

Het resultaat is dus 1.

Voor de volgende keer:
Probeer te debuggen door je code simpel te maken.
Dus probeer eerst een query als 'select * from table'

Dan weet je in ieder geval zeker dat daar geen fout in zit.
Sluit dingen uit, denk systematisch
Ik ken die warnings, dit is ook maar iets tussendoor, ik doe erg weinig PHP, en die mysql_query zit me nog in de vingers van way back.

En over die count, inderdaad, dat is het, ik weet niet waar ik met mijn gedachten zat om daar een count over te gooien :)

Thanks

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Carharttguy schreef op vrijdag 18 november 2016 @ 21:57:
[...]


Ik ken die warnings, dit is ook maar iets tussendoor, ik doe erg weinig PHP, en die mysql_query zit me nog in de vingers van way back.
Gebruik dan op zijn minst mysqli_query. Die is tenminste niet deprecated en daarmee kun je hetzelfde.

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


Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Zou liever verwijzen naar PDO prepare. Ik weet niet welke tutorial hier gebruikt is, maar strings concateneren om sql te krijgen is al vrij lang geen goed idee meer..

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Dat sowieso, maar áls hij dan al aangeeft daar niet in te willen duiken dan is mysqli_query in elk geval beter dan niks.

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


Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
" or 1=1 order by `value` desc limit 1 -- schijnt wel een goede coupon id te zijn 8)

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

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


Acties:
  • 0 Henk 'm!

  • Compizfox
  • Registratie: Januari 2009
  • Laatst online: 09-10 19:07

Compizfox

Bait for wenchmarks

Carharttguy schreef op vrijdag 18 november 2016 @ 21:57:
[...]

Ik ken die warnings, dit is ook maar iets tussendoor, ik doe erg weinig PHP, en die mysql_query zit me nog in de vingers van way back.
Da's dan vervelend, want de mysql extensie is al een paar versies lang deprecated en is in PHP7 (eindelijk) verwijderd. :)

Gewoon een heel grote verzameling snoertjes


Acties:
  • 0 Henk 'm!

  • Ventieldopje
  • Registratie: December 2005
  • Laatst online: 08-10 23:48

Ventieldopje

I'm not your pal, mate!

Beter lezen, het staat er echt letterlijk. Bovendien is debuggen geen abracadabra, simpelweg kijken wat mysql_num_rows voor output gaf had je probleem al gelijk opgelost. Bovendien is de documentatie van PHP uitstekend en is er op het internet echt belachelijk veel te vinden.

PHP:
1
echo count(mysql_num_rows($result));


count num_rows

www.maartendeboer.net
1D X | 5Ds | Zeiss Milvus 25, 50, 85 f/1.4 | Zeiss Otus 55 f/1.4 | Canon 200 f/1.8 | Canon 200 f/2 | Canon 300 f/2.8

Pagina: 1