PHP / MySQL - SQL sözdizimi hatası?

3 Cevap php

Ben karakteri gönderdiğinizde Şimdi ' Ben kelimeleri gönderirseniz o her şeyin yolunda olduğunu, diğer aşağıda listelenen aşağıdaki hatayı alıyorum. I htmlentities() kullanıyorum ve ben hala bu hatayı alıyorum.

Nasıl ben izin vermek veya karakteri bir hata olarak görüntüleyerek ' formu dönüştürmek veya durdurabilirsiniz bir yolu var oluyor bu hatayı önleyebilirsiniz?

İşte ben almak hatadır.

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '''')'

3 Cevap

Bir değişken, örneğin içine SQL sorgusu koymak

$query = "SELECT * FROM table WHERE field= ".mysql_real_escape_string($var)."";

echo $query;

$result = mysql_query($query);

Eğer sonra aslında sorgu gibi mysql gönderilir ne inceleyebiliriz

Siz uygun yöntemi kullanarak, dizeleri kaçmak zorunda. Bunu tahmin etmek zor ne PHP fonksiyonları kullanılan söz etmedi. PHP'nin ilgili pasajı gönderebilmek olmalı, ama burada birkaç örnek var:

$text = "x'x";

// MySQL extension
mysql_query($db, "INSERT INTO table VALUES ('" . mysql_real_escape_string($text, $db) . "')");

// MySQLi extension
$db->query("INSERT INTO table VALUES ('" . $db->mysql_real_escape_string($text) . "')");

// PDO's prepared statement
$stmt = $pdo->prepare('INSERT INTO table VALUES (:myvalue)');
$stmt->execute(array(
    'myvalue' => $text
));

// Another example
$stmt = $pdo->prepare(
    'SELECT *
       FROM users
      WHERE first_name = :first
        AND last_name  = :last'
);

$stmt->execute(array(
    'first' => 'John',
    'last'  => 'Smith'
));

foreach ($stmt as $row)
{
    echo $row['user_id'];
}

Ben kuvvetle PDO 's kullanmanızı öneririz prepared statements, bu uzun vadede yazın kısa ve kullanımı kolay.