mySQL-fråga

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
SeniorLemuren
Inlägg: 7803
Blev medlem: 26 maj 2009, 12:20:37
Ort: Kristinehamn

mySQL-fråga

Inlägg av SeniorLemuren »

Jag sparar mailadressen vid beställning av ett objekt. eftersom en köpare kan registrera flera beställningar efter varandra så adderar jag ett datum-tid till mailadressen.

När jag sedan skriver ut kostnaden så skall den beräknas efter hur många item som finns på en viss mailadress.

Jag söker i databasen och hittar mailadresserna. Men hur ser jag sedan hur många träffar jag fått? Det står helt stilla nu för tiden så jag behöver hjälp.

Kod: Markera allt

<?php $query_order = "SELECT * FROM cc_kund WHERE mail like " . '"' . $userMail  .'%"'; 
$result = $con->query($query_order);
$row = mysqli_fetch_array($result); 
?>
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43178
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: mySQL-fråga

Inlägg av sodjan »

Borde vara något slags "size" kommando på $row (?).
Eller en separat

SELECT COUNT(*) FROM cc_kund WHERE mail like " . '"' . $userMail .'%"';

(Inom parentes så är inte "select-star" så snyggt i programkod. Det är
praktiskt då man kör manuellt, men inte i produktions-kod.)
Wihelm
Inlägg: 591
Blev medlem: 18 juni 2019, 17:30:19
Ort: Nybro

Re: mySQL-fråga

Inlägg av Wihelm »

SeniorLemuren
Inlägg: 7803
Blev medlem: 26 maj 2009, 12:20:37
Ort: Kristinehamn

Re: mySQL-fråga

Inlägg av SeniorLemuren »

Tja, som vanligt. Jag hittade det i ett av mina gamla sidor från förr precis när jag postat frågan.

Kod: Markera allt

<?php $query_order = "SELECT * FROM cc_kund WHERE mail like " . '"' . $userMail  .'%"'; 
$result = $con->query($query_order);
$row = mysqli_fetch_array($result); 

$antRows = mysqli_num_rows($result);
echo $antRows; ?>
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43178
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: mySQL-fråga

Inlägg av sodjan »

Ja, jag misstänkte att API't hade en sådan funktion också, men har inte jobbat med MySQL...
agehall
Inlägg: 425
Blev medlem: 12 augusti 2020, 19:27:54

Re: mySQL-fråga

Inlägg av agehall »

Hett tips: skapa ALDRIG SQL frågor genom att klippa ihop strängar sådär. Det kanske bara är ett exempel du visar nu, men om du gör det i produktion och jag använder e-mail i stil med ”;DELETE * FROM cc_kund;” så blir det tråkigt…
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43178
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: mySQL-fråga

Inlägg av sodjan »

schnilsch
Inlägg: 76
Blev medlem: 11 juni 2014, 18:14:16

Re: mySQL-fråga

Inlägg av schnilsch »

Mysqli förhindrar att det utförs två queries samtidigt om man inte använder mysqli_multi_query() så just agehalls exempel borde inte funka.
Finns dock andra fulingar man kan göra så prepared statements är ändå kung :)
SeniorLemuren
Inlägg: 7803
Blev medlem: 26 maj 2009, 12:20:37
Ort: Kristinehamn

Re: mySQL-fråga

Inlägg av SeniorLemuren »

Ok. Kan man få ett förslag på hur man skall skriva om min select för att bli säker. Jag förstod inte riktigt de länkade exemplen. :humm:
Wihelm
Inlägg: 591
Blev medlem: 18 juni 2019, 17:30:19
Ort: Nybro

Re: mySQL-fråga

Inlägg av Wihelm »

Bobby Tables är inte roligt att få besök av.
Bobby-Tables.png
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
schnilsch
Inlägg: 76
Blev medlem: 11 juni 2014, 18:14:16

Re: mySQL-fråga

Inlägg av schnilsch »

https://phpdelusions.net/mysqli_example ... red_select
Här fanns ett enkelt exempel med bra förklaring.
SeniorLemuren
Inlägg: 7803
Blev medlem: 26 maj 2009, 12:20:37
Ort: Kristinehamn

Re: mySQL-fråga

Inlägg av SeniorLemuren »

Japp jag hittade detta för en stund sedan och testar men får det inte att funka. Kanske jag skriver fel?

Kod: Markera allt

$userMail = 'Olg%';
$sql = "SELECT * FROM users WHERE id like ?";
$stmt = $con->prepare($sql); 
echo $userMail; //Hit funkar det
$stmt->bind_param("s", $userMail); //Här går det fel och stannar, varken med eller utan %-tecknet
echo $userMail; // Hit kommer det inte
$stmt->execute();
$result = $stmt->get_result(); 
$user = $result->fetch_assoc(); 
echo $user;
BJ
Inlägg: 8226
Blev medlem: 11 april 2007, 08:14:53
Ort: En_stad

Re: mySQL-fråga

Inlägg av BJ »

En annan sak med det länkade exemplet är att programmet dör
när det misslyckas. Så måste det inte vara. Man kan lika gärna
använda en eller flera variabler som håller reda på om det blir fel.
Då kan man börja och avsluta sidan hur man vill genom att titta
på variabeln eller variablerna både där och lite senare, hur det gick.
schnilsch
Inlägg: 76
Blev medlem: 11 juni 2014, 18:14:16

Re: mySQL-fråga

Inlägg av schnilsch »

Det kanske är så att prepare misslyckas och $stmt är null?
Har du någon fellogg du kan titta på?

Edit:
Prepare ska returnera false om den misslyckas.
Skriv svar