PHP ve MySQL - mysqli_real_escape_string kullanmak için doğru yolu

2 Cevap php

Aşağıdaki kod bir veritabanında kullanıcıların verileri saklarken mysqli_real_escape_string() kullanmak için doğru yolu olup olmadığını merak ediyordum.

Burada PHP & olduğunu MySQL kodu.

if (mysqli_num_rows($dbc) == 0) {
        $mysqli = mysqli_connect("localhost", "root", "", "sitename");
        $dbc = mysqli_query($mysqli,"INSERT INTO info (user_id, url) 
                                     VALUES ('$user_id', 'mysqli_real_escape_string($url)')");
}


if ($dbc == TRUE) {
        $dbc = mysqli_query($mysqli,"UPDATE info 
                                     SET url = 'mysqli_real_escape_string($url)' 
                                     WHERE user_id = '$user_id'");

2 Cevap

Hayır, mysqli_real_escape_string() sizin dize içinde yürütülür. Sen PHP kodu içine dışarı taşımak gerekir:

$eUrl = mysqli_real_escape_string($url);
mysqli_query($mysqli, "INSERT ... VALUES ('$eUrl')");

Bu modern dünyada şeyler kaçmak için "doğru" yolu vardır ama ben (ve eminim, burada diğerleri) bağlayıcı olduğunu PDO ve değişken iddia edecektir.

Neredeyse: Sen dizge dışında işlev çağrıları koymak gerekir:

"... VALUES ('$user_id', '".mysqli_real_escape_string($url)."')");

Kapatma " ve bitiştirme . önce ve sonra işlev çağrısı dikkat edin.

$user_id nereden geldiğini ve biz bilmiyoruz. Dışarıdan gelirse, o da kaçtı gerekiyor.