Sorun mysql escape characters veya addslashes gibi bir fonksiyonla kullanıcıdan gelen girdiyi temizlemediğiniz için oluşuyor olabilir, genelde MySQL & PHP ile yeni tanışan arkadaşlar bu tip hatalarla çok sık karşılaşırlar. PostgreSQL bu tip sorunları sizin için variable insert mantığı ile çözerken, MySQL sizin için bu sorunu çözmez, oturup çözmeniz beklenir.

Yapacağınız en büyük iyilik tüm gelen veriyi bir fonksiyon yardımı ile mutlaka temizlenmiş ve tırnakları kurtarılmış veriye dönüştürmek olacaktır, son kullanıcıya HİÇ BİR ZAMAN ve ASLA güvenmeyin, gelen veriyi isterse dropdown'dan gelsin mutlaka ama mutlaka temizleyin.

Örnek olarak aşağıdaki kodu inceleyin, fark edeceğiniz üzere $city değişkeni ' ile başlıyor ve temizlenmezse mutlaka hata verir.

<?php
$mysqli->query("CREATE TEMPORARY TABLE myCity LIKE City");

$city = "'s Hertogenbosch";

/* this query will fail, cause we didn't escape $city */
if (!$mysqli->query("INSERT into myCity (Name) VALUES ('$city')")) {
    printf("Error: %s\n", $mysqli->sqlstate);
}

$city = $mysqli->real_escape_string($city);

/* this query with escaped $city will work */
if ($mysqli->query("INSERT into myCity (Name) VALUES ('$city')")) {
    printf("%d Row inserted.\n", $mysqli->affected_rows);
}

$mysqli->close();
?>

23.11.2012 17:33 tarihinde, Nilüfer Kibar yazdı:
direkt host üzerinden yapıyorum işlemleri:)

--
*Ömer Barlas*
[email protected]

_______________________________________________
Linux-programlama mailing list
[email protected]
https://liste.linux.org.tr/mailman/listinfo/linux-programlama
Liste kurallari: http://liste.linux.org.tr/kurallar.php

Cevap