Kan ik de variabelen $sql, $result en $row telkens opnieuw weer gebruiken?
of moet ik eerst deze leegmaken voordat ze weer gebruikt kunnen (?) worden


<?php
$sql = "SELECT email1 FROM $tbl_name";
$result = mysql_query($sql);

if ($result)
{
echo 'hallo'.'<br />';
//--
while($row = mysql_fetch_assoc($result))
{
if ($loc_email == $row['email1'])//komt email in DB voor?
{
$cnt=1;
break 1;
}
}

//--
if ($cnt == 1) {
echo 'Y1';
$sql = "SELECT password FROM $tbl_name WHERE email1='$loc_email'";
$result = mysql_query($sql);

while($row = mysql_fetch_assoc($result))
{
echo "loc= .$loc_password";
echo $row['password1'];
if ($loc_password == $row['password1'])
{
echo'Y2';
?>
Kun je gewoon doen; wanneer je een nieuwe waarde toekent, wordt de oude automatisch overschreven.

Wat je nĂ­et kan doen is een veld 'password' uit de database halen (r.21) vervolgens werken met 'password1' (r.27 en 28).
je moet je zelf altijd wel even afvragen of je de variabele niet meer nodig hebt voordat je hem overschrijft.

dit werkt prima:
<?php
// eerste keer
$result = mysqli_query(...);
while($row = mysqli_fetch_assoc($result))
{
echo $row['naam'];
}
// tweede keer
$result = mysqli_query(...);
while($row = mysqli_fetch_assoc($result))
{
echo $row['naam'];
}
?>

maar hier gaat het mis:
<?php
// eerste keer
$result = mysqli_query(...);
while($row = mysqli_fetch_assoc($result))
{
// tweede keer
$result = mysqli_query(...);
while($row = mysqli_fetch_assoc($result))
{
echo $row['naam'];
}
}
?>
bij de laatste ga je in de lus $result overschrijven terwijl die nog nodig is in de vergelijking van de while lus, dus zul je deze variabele een andere naam moeten geven.
Het is natuurlijk een persoonlijke schrijf wijze, maar het liefst ga ik voor variabelen die een betekenis hebben. Dit maakt eventuele troubleshooting en het lezen van je code stukken makkelijker wanneer het wat uitgebreidere scripts worden.

Ik gebruik voor de connectie dat in een conf staat $conn voor.

Voor een SELECT query gebruik ik $sel
Voor een INSERT query gebtuik ik $ins
Voor een DELETE query gebruik ik $del
enzovoorts.

Net wat Frank zegt, als je dus een while loop in een while loop maakt met dezelfde variabelen kan het dus helemaal fout gaan. Ik raad ook hier aan om een unieke variabel te gebruiken.

Bijvoorbeeld je vraagt eerst alle gebruikersnamen, datums en status op, deze zou ik bijvoorbeeld $selUser gebruiken ipv $row, heb je dan nog iets in een while loop bijvoorbeeld alleen een status, zou ik die bijvoorbeeld $statusUser noemen.

Dan zie je zelf ook sneller in welk stuk het fout kan gaan, als je een notice of error krijgt met bijvoorbeeld 'unexpected end, expected ; near $row' Dan moet je misschien wel 4 verschillende $row variabelen na gaan kijken in je script.

Nogmaals dit is een persoonlijke voorkeur van programmeren, ik geef het alleen mee als advies.
Super bedankt voor de reakties, zeer leerzaam voor mij als beginnende PHP-er!

Reageren