ช่วยผมทีครับ ไม่ได้สักที
ช่วยผมทีครับ ผมใช้โค๊ดนี้ ในการปรับข้อมูลในฐานข้อมูลครับโดยผ่าน 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>
ทางแก้ปัญหาง่ายๆวิธีหนึ่ง ก็คือการนำคำสั่งนั้น ไปทดสอบบน phpMyAdmin โดยตรงครับ หรือถ้าไม่แน่ใจว่าคำสั่งที่ถูกต้องเป็นอย่างไร ก็ลองทำคำสั่งนั้นๆ โดยตรงบน phpMyAdmin ดูครับ
ขอบคุณมากครับ
$strSQL = $strSQL . "SET name='$name', email='$email'";
$strSQL = $strSQL . "WHERE id=$id";
ครับดีใจด้วย ที่หาเองเจอ นี่ถ้า echo เอา $strSQL ออกมาดูซะก่อน ก็ตอบคำถามตัวเองได้แล้ว บางทีเรื่องบางเรื่องก็หญ้าปากคอกครับ ผิดกันได้เสมอ แต่ผมว่าการเรียนรู้ที่จะหาความผิดพลาดนั้นๆสำคัญกว่าครับ
มีสิ่งหนึ่งในคำสั่ง SQL ที่มักจะละเลยไม่ค่อยใส่กันคือการใส่ `id` คร่อมชื่อฟิลด์ครับ ซึ่งจะช่วยลดความผิดพลาดลงได้มากครับ
ตรงนี้ใช่มั๊ยฮ่ะ
echo"\t\t\t<option value=\"$rs->id\">$rs->id
";
ไม่ใช่ 5555 มั่ว
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 กับเครื่องหมายฟันหนู มันต้องเว้นวรรคครับ