ช่วยผมทีครับ ไม่ได้สักที

ช่วยผมทีครับ  ผมใช้โค๊ดนี้ ในการปรับข้อมูลในฐานข้อมูลครับโดยผ่าน Form ครับ

มันไม่ได้อ่าครับ  ผมลองใส่ค่า test ในช่อง Name  ใส่ 1234 ในช่อง Email พอกด Submit มันแสดงผลแบบนี้ครับ

ไม่สามารถปรับปรุงข้อมูลได้ :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 '='test', email='1234'WHERE id=1' at line 1

ผมผิดพลาดอะไรตรงไหนหรือเปล่าครับ




<html>
<head>
<title>my web</title>
</head>
<body bgcolor="#E3E3E3">
<table boder="1" cellpadding="5" cellspacing="2">
<tr>
<td><b>ID</b></td><td><b>name</b></td><td><b>email</b></td>
</tr>
<?php
$hostname = "localhost";
$username = "test";
$password = "1234";
$dbname = "test";

$conn = mysql_connect( $hostname, $username, $password );
if ( ! $conn )
 die( "ไม่สามารถติดต่อกับ MySQL ได้" );
mysql_select_db( $dbname, $conn )
 or die ( "ไม่สามารถเลือกใช้งานฐานข้อมูล $dbname ได้" );

if ( isset( $id ) && isset( $name ) && ( $email ) )
 {
  $strSQL = "UPDATE contact";
  $strSQL = $strSQL . "SET name='$name', email='$email'";
  $strSQL = $strSQL . "WHERE id=$id";
  $result = mysql_query( $strSQL, $conn );
  if ( ! $result )
   die ( "ไม่สามารถปรับปรุงข้อมูลได้  :" . mysql_error() );
 }

$strSQL = "SELECT * FROM contact";

$result = mysql_query( $strSQL, $conn );

$Total = mysql_num_rows( $result );


while ( $rs = mysql_fetch_array( $result ) )
 {
  echo"<tr>
";
  echo"\t<td>$rs[id]</td><td>$rs[name]</td><td>$rs[email]</td>
";
  echo"</tr>
";
 }

echo"</table>
";
echo"<p>มีจำนวนทั้งหมด<b>$Tatal</b> ระเบียน";
echo"
 <form method=\"post\" action=\"$PHP_SELF\">
 <table border=\"0\" cellpadding=\"3\" cellspacing=\"0\">
 <tr>
  <td align=\"right\">ID :</td>
  <td>
   <select name=\"id\">
  ";

$result = mysql_query( "SELECT id FROM contact" );
while ( $rs = mysql_fetch_object( $result ) )
 {
  echo"\t\t\t<option value=\"$rs->id\">$rs->id
";
 }

echo"
 </select>
 </td>
 </tr>
  <tr>
   <td align=\"right\"> Name :</td>
   <td><input type=\"text\" name=\"name\" size=\"30\"></td>
  </tr>
  <tr>
   <td align=\"right\">Email :</td>
   <td><input type=\"text\" name=\"email\" size=\"30\"></td>
  </tr>
  <tr>
   <td colspan=\"2\" align=\"right\"><input type=\"submit\" value=\"Update\"></td>
  </tr>
  </table>
  </form>
  ";

mysql_close( $conn );
?>

</body>
</html>

 

24 ม.ค. 2552 7 2,669

You have an error in your SQL syntax หมายถึง ข้อความ sql ไม่ถูกต้อง ลองตรวจสอบคำสั่ง sql ดูครับ

ทางแก้ปัญหาง่ายๆวิธีหนึ่ง ก็คือการนำคำสั่งนั้น ไปทดสอบบน phpMyAdmin โดยตรงครับ หรือถ้าไม่แน่ใจว่าคำสั่งที่ถูกต้องเป็นอย่างไร ก็ลองทำคำสั่งนั้นๆ โดยตรงบน phpMyAdmin ดูครับ
#1

ได้ละครับ  ผิดแค่นิดเดียวเองครับ แค่ไม่ได้เว้นวรรค อิอิ

ขอบคุณมากครับ
#2

  $strSQL = "UPDATE contact";
  $strSQL = $strSQL . "SET name='$name', email='$email'";
  $strSQL = $strSQL . "WHERE id=$id";

ครับดีใจด้วย ที่หาเองเจอ นี่ถ้า echo เอา $strSQL ออกมาดูซะก่อน ก็ตอบคำถามตัวเองได้แล้ว บางทีเรื่องบางเรื่องก็หญ้าปากคอกครับ ผิดกันได้เสมอ แต่ผมว่าการเรียนรู้ที่จะหาความผิดพลาดนั้นๆสำคัญกว่าครับ

มีสิ่งหนึ่งในคำสั่ง SQL ที่มักจะละเลยไม่ค่อยใส่กันคือการใส่ `id` คร่อมชื่อฟิลด์ครับ ซึ่งจะช่วยลดความผิดพลาดลงได้มากครับ
#3

เห็นกันมั้ยน่ะ เครื่องหมายคล้ายๆฟันหนูเล็กๆสีแดง คร่อมคำว่า id ครับ
#4

ตรงนี้ใช่มั๊ยฮ่ะ

echo"\t\t\t<option value=\"$rs->id\">$rs->id
";

#5

ไม่ใช่ 5555 มั่ว

#6

if ( isset( $id ) && isset( $name ) && ( $email ) )
 {
  $strSQL = "UPDATE contact";
  $strSQL = $strSQL . "SET name='$name', email='$email'";
  $strSQL = $strSQL . "WHERE id=$id";
  $result = mysql_query( $strSQL, $conn );
  if ( ! $result )
   die ( "ไม่สามารถปรับปรุงข้อมูลได้  :" . mysql_error() );
 }


ตรงนี้ครับที่ผมผิด  ระหว่าง contact กับเครื่องหมายฟันหนู  มันต้องเว้นวรรคครับ

#7
ความคิดเห็น
ไฟล์อัปโหลด ชนิด jpg, jpeg ขนาดไฟล์ไม่เกิน 1024
^