MySQL Query ile sözdizimi hatası

3 Cevap php

Ben aşağıdaki hatayı alıyorum ve ben ona bakarak saat geçirdim ve neden bilemiyorum!

HATA: SQL sözdizimi bir hata var; line 1 yakınlarındaki 'birincil =' doej2 ', ikincil = '1' id = '2'' kullanmak için doğru sözdizimi için MySQL sunucu sürümü karşılık kılavuzunu kontrol

İşte benim kod:

<?php
if (isset($_POST[Edit])){

$id = $_POST['id'];
$primary = $_POST['primary'];
$secondary = $_POST['secondary'];

$query = mysql_query("UPDATE eventcal SET primary='$primary', secondary='$secondary' WHERE id='$id'");

if (!$query) {
  $_SESSION['alert'] = 'ERROR: ' . mysql_error();
}

}?>

Ve burada eventcal tabloda benim tablo yapısı:

 CREATE TABLE `eventcal` (
 `id` int(10) unsigned NOT NULL auto_increment,
 `region` tinyint(3) unsigned NOT NULL,
 `primary` varchar(25) NOT NULL,
 `secondary` tinyint(1) NOT NULL,
 `eventDate` date NOT NULL,
 PRIMARY KEY  (`id`),
 KEY `primary_2` (`primary`),
 KEY `secondary` (`secondary`),
 CONSTRAINT `eventcal_ibfk_1` FOREIGN KEY (`primary`) REFERENCES `users` (`username`) ON UPDATE CASCADE
 ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8

Herkes özlüyorum ne görebilirim? Teşekkürler!

3 Cevap

"Birincil" MySQL ayrılmış bir sözcüktür. Düzgün diğer alanlarda olduğu gibi (kullanmak çevresinde kene koyabilirsiniz:

$query = mysql_query("UPDATE `eventcal` SET `primary`='$primary', `secondary`='$secondary' WHERE `id`='$id'");

'Birincil' MySQL ayrılmış bir sözcüktür. Belgeleri:

, "Schema Object Names", Bölüm 8.2 de anlatıldığı gibi bunları alıntı eğer saklıdır kelime tanımlayıcı olarak izin verilir.

Sözdizimi hatası daha kötü SQL-injection hole: olduğunu

Bu değiştirin:

enter image description herecoding horror

$id = $_POST['id'];
$primary = $_POST['primary'];
$secondary = $_POST['secondary'];

Bu koda

$id = mysql_real_escape_string($_POST['id']);
$primary = mysql_real_escape_string($_POST['primary']);
$secondary = mysql_real_escape_string($_POST['secondary']);