MySQL sorgu hatası

3 Cevap php

Ne bu MySQL sorgu ile yanlış?

$name = mysqli_real_escape_string($db,$_POST['name']);
$email = mysqli_real_escape_string($db,$_POST['email']);
$comment = mysqli_real_escape_string($db,$_POST['content']);
$dt = date("F j, Y, g:i a");
$sql = mysqli_query($db, "INSERT INTO `tbl_contact` (`id`, `name`, `email`, `comment`, `date`) 
VALUES (NULL, '".$name."', '".$email."', '".$comment."', '".$dt."'");

Bu ile başarısız tutar

Eğer SQL sözdizimi bir hata var; hattında 2 de'' yakın kullanma hakkı sözdizimi için MySQL sunucu sürümü karşılık kılavuzunu kontrol.

Teşekkürler :)

3 Cevap

Eğer SQL VALUES parantez kapatma değil - son satırı şöyle bitmeli:

..., '".$dt."')");
              ^
              Added closing parenthesis for the VALUES clause.

Gerçekten de, parantez kapatmak gerekir.

Bir dahaki sefere, hata bu tür alırsanız, aslında baskı ile yürütülmekte olan SQL bulmaya çalışın. Daha sonra (birkaç saniye içinde bu bir görürdük) elle sorgu analiz, veya kolayca değiştirebilir ve sorgu daha karmaşık sorguları yürütmek bazı ortamında çalıştırabilirsiniz ya.

Böyle tuzaklardan kaçınmak için takip iyi uygulamalardan biri bir satırda bir sorgu oluşturmak ve bu gibi bir sonraki satırda sorgu yürütmek için

$sql="INSERT INTO `tbl_contact` (`id`, `name`, `email`, `comment`, `date`) 
VALUES (NULL, '".$name."', '".$email."', '".$comment."', '".$dt."')";

$result = mysqli_query($sql);

Başka bir zaman tasarrufu hile 'eklenmesi için gereksiz concatenations ommitting edilir. Sizin sql Bunun gibi daha basit olabilirdi

$sql="INSERT INTO `tbl_contact` (`id`, `name`, `email`, `comment`, `date`) 
VALUES (NULL, '$name', '$email', '$comment', '$dt')";