Ben standart mysql_connect () mysql_query (), vb PHP MySQL şeyler yapmak için ifadeleri kullanmak için kullanılır. Son zamanlarda ben harika MDB2 sınıfını kullanarak üzerinden geçiş oldum. Bununla birlikte, ben hazırlanmış deyimleri kullanıyorum, bu yüzden benim giriş ve SQL enjeksiyon saldırıları kaçan konusunda endişelenmenize gerek yok.
Ancak, ben çalıştırıyorum bir sorun var. Ben (yani, null değerlere izin vermez)-null olarak belirtilen bir kaç VARCHAR sütunları olan bir tablo var. Eski MySQL PHP komutlarını kullanarak, herhangi bir sorun olmadan bu gibi şeyler yapabilirsiniz:
INSERT INTO mytable SET somevarchar = '';
Şimdi, ancak, ben bir sorgu varsa şöyle:
INSERT INTO mytable SET somevarchar = ?;
Ve sonra PHP var:
$value = "";
$prepared = $db->prepare($query, array('text'));
$result = $prepared->execute($value);
Bu "null value violates not-null constraint
" hata atmak olacaktır
$value
boş ise geçici bir çözüm olarak, ben kontrol ve " "
(tek bir boşluk) değiştirin, ama bu korkunç kesmek ve başka sorunlara neden olabilir.
Nasıl yerine NULL eklemek çalışıyorum olmadan hazırlanıp boş dizeler eklemek gerekiyor?
EDIT: Bu, benim tüm kod temeli geçmesi boş bir dize "" kullandığı her yerde bulmak ve yerine NULL kullanmak değiştirmek için bir proje çok büyük. Standart bir MySQL Sorgular "tedavi" ile iki ayrı şeyler için (ben doğru olduğunu düşünüyorum) NULL, ancak hazırlanan ifadeleri dönüştürür "," NULL'A içine neden nedir bilmem lazım olduğunu.
"" Ve null not aynı şey olduğunu unutmayın. Örneğin, SELECT NULL = "";
beklediğiniz gibi döner NULL
yerine 1
.