I mysqli parametre olarak bağlamak çünkü PHP benim değişkenin değerini değişiyor?

2 Cevap php

im i have değişken bir noktada değiştirildi ediliyor, ve ben sorunu buldum burası garip bir hata aşağı izleme:

echo "2. page is $page<br>";
$h = $page;
//Ok everything is done. Now need to update the view counter
$query = "UPDATE pages SET views=views+1 WHERE id=? LIMIT 1";
if($stmt = $db -> prepare($query))
{
    $stmt -> bind_param("i", $page);
    $stmt ->execute();
    $stmt ->close();
}
else
    dberror();
echo "3. page is $page<br>";
$page = $h;
echo "4. page is $page<br>";

Yani bu alıyorum:

2. page is page
3. page is 0
4. page is page

Ben sadece denemek ve sorunu çözmek için o $ h değişken eklenir ve o çalıştı. Yani nedense sql sorgu sayfam değişken destrying edilir. Bunun neden biliyor mu?

2 Cevap

Sen bir tamsayı olarak bağlı: $stmt->bind_param("i", $page);, ama aslında bir dize oldu: "page".

bind_param açıklamaya actual variable için bir başvuru değil, onun bir kopyası, bağlar. Yani bir sınır tamsayı parametre olarak çalışmak için bir tamsayı dönüştürerek, değişkeni değiştirmeniz gerekir.

"page" (aslında, hiçbir basamak içeren herhangi bir dize) bir tamsayı değeri 0, bunu olma görmek yüzden bu yüzden 0.

$page referans yoluyla geçirilir bind_param("i", $page);, böylece diğerleri belirtildiği gibi, PHP int dönüştürülmüş ve tahrip edilmiştir yüzden