PHP + MySQL Hatası

4 Cevap php
if ($_POST) {$content = stripslashes($_POST['content']);
$by = $_SESSION['exp_user']['username'];
$dt = date("F j, Y, g:i a"); 
mysql_query("UPDATE tbl_intmsg SET time = ".$dt.", by = ".$by." AND content = ".$content."") or die(mysql_error());

Bunun için ben hata alma:

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 '26, 2009, 2:28 pm, by = shamil.nunhuck AND content = Test message! ' at line 1

Herhangi bir fikir?

4 Cevap

Ah o hurda, burada cevap var:

$db = mysql_query("UPDATE `tbl_intmsg` SET `time` = '".$dt."', `by` = '".$by."', `content` = '".$content."'");  

Siz de amaçlanan fonksiyonu ile giriş hijyen düşünebilirsiniz:

mysql_real_escape_string()

Bkz: http://uk3.php.net/manual/en/function.mysql-real-escape-string.php

Bu MySQL sunucusu tarafından okunan edilirken Evet SQL bu gibi görünüyor:

UPDATE tbl_intmsg SET time = 26, 2009, 2:28 pm, by = shamil.nunhuck 
    AND content = Test message!

Nasıl MySQL ne bu açıklamada ne olduğunu anlamaya mı?

Eğer $ içerik NEREDE kukla = true ''0 ayarlanmış olduğunu, örneğin, düşünün. Sonra SQL aşağıdaki gibi olacaktır:

UPDATE tbl_intmsg SET time = 26, 2009, 2:28 pm, by = shamil.nunhuck 
    AND content = 0 WHERE dummy = true

Eğer sorun görüyor musunuz? Nasıl SQL veri nedir, ve SQL anahtar kelimeler nedir anlamaya mı?

Cevap: tırnak!

SQL bu gibi görünmelidir:

UPDATE tbl_intmsg SET time = '26, 2009, 2:28 pm', by = 'shamil.nunhuck' 
    AND content = 'Test message!'

Sizin PHP SQL sorgu dizesi bu gibi görünebilir:

$q="UPDATE tbl_intmsg SET time = '$dt', by = '$by' AND content = '$content'";

(PHP değişkenler için çift tırnak dizeleri ayrıştırır ve bunların değeri ile değiştirir unutmayın. Ayrıca yukarıda belirtilen işlevini kullanmanız gerektiğini unutmayın

mysql_real_escape_string($var)

MySQL içine koyarak önce verilerinizi sterilize etmek. İşte MECHLER göndermek olamayacağını link: php.net/mysql-real-escape-string)

Şerefe!

/ 0

Lütfen dize değişkenleri etrafında SQL tırnak koymak:

UPDATE tbl_intmsg SET time = \"".$dt."\", by = \"".$by."\" AND content = \"".$content."\"