mysqli vs mysql ger inte samma resultat

PHPportalen Forum Index » Databaser
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
kungmats



Medlem i: 5503 dagar
Från: Falun
Status: Offline



#741418
Inlägg Skrivet: 2017-01-28 16:46      Ämne: mysqli vs mysql ger inte samma resultat Citera

Hej
Jag håller på att ändra en massa frågor till mysqli men får ett fel.
Med min gamla mysql_query() fråga får jag ca 300 träffar, men med mysqli_query() får jag bara 1. Vad gör jag för fel?

KOD:
1:
<?
2:
include'../conn_mysqli.php';
3:
$nu = time()+518400;
4:
$senaste_kop_limit = $nu-9072000;
5:
$nasta_kop_time = time()+1728000;
6:
 
7:
 
8:
$query2 =  " SELECT COUNT(*) FROM kunder WHERE
9:
(
10:
   omrades_id ='{$_REQUEST['omrades_id']}' &&
11:
   telefon LIKE '07%' &&
12:
   senaste_kop_time > $senaste_kop_limit &&
13:
   nasta_kop_time < '$nasta_kop_time'
14:
) ";
15:
$result2 = mysqli_query($open, $query2);
16:
$antal_smsmottagare = mysqli_num_rows($result2); 
17:
echo $antal_smsmottagare;
18:
 
19:
 
20:
 
21:
// Gammal mysql_query() som fungerar
22:
/*
23:
$antal_smsmottagare = mysql_num_rows (mysql_query (" SELECT * FROM kunder WHERE
24:
(
25:
   omrades_id ='{$_REQUEST['omrades_id']}' &&
26:
   telefon LIKE '07%' &&
27:
   senaste_kop_time > $senaste_kop_limit &&
28:
   nasta_kop_time < '$nasta_kop_time'
29:
)
30:
   "));
31:
*/
32:
 
33:
?>
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
harald_b
Moderator



Medlem i: 4139 dagar
Från: Tavesta
Status: Offline



#741420
Inlägg Skrivet: 2017-01-28 20:12      Ämne: Citera

När du använder COUNT(*) så skall den inte kombineras med mysqli_num_rows(). I din nya kod innehåller resultatet bara en rad, men den raden innehåller en siffra som visar antalet rader sql-frågan genererar totalt.

I nyare versioner av php så kan du köra:
PHP:
1:
 $antal_smsmottagare mysqli_fetch_array($result2)[0]; 


Men i äldre versioner behöver du ta en liten omväg:
PHP:
1:
 list($antal_smsmottagare) = mysqli_fetch_array($result2); 


För övrigt:
Om du stoppar in data från $_REQUEST direkt i din sql-kod blir det ganska lätt att hacka din databas. I det här läget måste datat escapeas!
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
kungmats



Medlem i: 5503 dagar
Från: Falun
Status: Offline



#741426
Inlägg Skrivet: 2017-01-29 14:36      Ämne: Citera

Tack.

Innan jag fick ditt svar så ändrade jag till att räkna så här.
KOD:
1:
$result =  $open->query(" SELECT COUNT(*) AS CountIT FROM order WHERE leveransdatum='$leveransdatum' ");
2:
$row = $result->fetch_assoc();
3:
$kolla_om_leveransdatum_finns = $row['CountIT'];


Vad gäller escape så blir väl detta rätt? ... det funkar iaf.
KOD:
1:
$leveransdatum = mysqli_real_escape_string($open, $_REQUEST['leveransdatum'] );


Tack för att du hjälper mig @harald_b Very Happy

Senast ändrad av kungmats den 2017-01-30 09:14, ändrad totalt 1 gång
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
harald_b
Moderator



Medlem i: 4139 dagar
Från: Tavesta
Status: Offline



#741428
Inlägget är accepterad som det rätta svaret Skrivet: 2017-01-30 01:51      Ämne: Citera

Det fungerar precis lika bra att använda AS CountIT som lösningen jag föreslog.

mysqli_real_escape_string() är mycket riktigt rätt escapefunktion i ditt fall. Den variabel jag såg i din kod som behöver escapeas var $_REQUEST['omrades_id']. Du kan göra likadant med den som du visade med $_REQUEST['leveransdatum'].
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget
PHPportalen Forum Index » Databaser
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic