maden

Tue 15 Aug 2006 13:14:20
Tue 15 Aug 2006 13:14:20
พอดีผมทำ webboard น่ะครับ ทำได้หมดแหล่ะแต่ติดปัญหาที่ว่าคือ หากผมกรอก
ชื่อเป็น: Smart's
หัวข้อเป็น : ยินดีต้อนรับเข้าสู่ Smart's
รายละเอียดกระทู้เป็น : ขอต้อนรับทุกท่านเข้าสู่ Smart's
มันจะมี Error ฟ้องไม่ให้เก็บลงฐานข้อมุลว่า
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 Smart's
รู้สึกว่าผมจะไม่สามารถป้อน ข้อความใดๆได้เลยที่มี 's เช่น Smart's หรือ Value's หรือ News's ผมจะกรอกไม่ได้เลย มันจะ Error ทันที่ครับ ทั้งๆที่ผมใช้คำสั่ง
// ป้องกันการแทรก html กับ เครื่องหมาย ' " กัน Error ที่จะเกิดขึ้นกับคำสั่ง SQL
$wb_topic = htmlspecialchars($wb_topic);
$wb_question = htmlspecialchars($wb_question);
$wb_poster = htmlspecialchars($wb_poster);
ก่อนที่จะเก็บลง Database แล้วอ่ะครับ แต่พอรันกลับเครื่องตัวเองก็รันได้ปกติ แต่พอใช้ใน server จริงๆแล้วเกิด Error อ่ะครับ งง งง งง ผมมีโค๊ดมาให้ดูด้วยอ่ะครับ
/////////////////
<?php
// รับค่าตัวแปรที่ส่งมาจากฟอร์มแบบ Post มาเก็บไว้ในตัวแปรธรรมดา
$wb_topic=$_POST["topic"]; // หัวข้อกระทู้
$wb_question=$_POST["question"]; // รายละเอียดของคำถาม
$wb_poster=$_POST["poster"]; // ชื่อผู้ตั้งกระทู้ถาม
// ป้องกันการแทรก html กับ เครื่องหมาย ' " กัน Error ที่จะเกิดขึ้นกับคำสั่ง SQL
$wb_topic = htmlspecialchars($wb_topic);
$wb_question = htmlspecialchars($wb_question);
$wb_poster = htmlspecialchars($wb_poster);
// ให้ขึ้นบันทัดใหม่ กรณีที่มีการเคาะ Enter เพื่อใช้ในการแสดงข้อมูลบนหน้าเว็บ / ตรวจ เช็ครูปแบบข้อความ HTML และแทนที่รูปแบบ Tag HTML
$wb_question = eregi_replace(chr(13),"<br>",$wb_question);
?>
<?php
//กำหนดคำสั่ง SQL Statement ให้กับตัวแปร $sql_insert เพื่อทำการเพิ่มข้อมูลใหม่ลงไปในฐานข้อมูล
$sql_insert = "insert into wb_question (id_question, topic, question, poster, date_post, ip_post) ";
$sql_insert .= "values ('$currentmax', '$wb_topic', '$wb_question', '$wb_poster', '$wb_date', '$wb_ippost')";
//สั่งให้คำสั่ง SQL Statement ทำงานแล้วนำข้อมูลที่ได้เก็บไว้ที่ตัวแปร $table
$table = mysql_query($sql_insert,$conn) or die ("ไม่สามารถเพิ่มคำถามใหม่ลงในตาราง wb_question ได้เพราะ : ". mysql_error());
?>
//////////////////////
รบกวนหน่อยครับ ขอบพระคูณครับ
ชื่อเป็น: Smart's
หัวข้อเป็น : ยินดีต้อนรับเข้าสู่ Smart's
รายละเอียดกระทู้เป็น : ขอต้อนรับทุกท่านเข้าสู่ Smart's
มันจะมี Error ฟ้องไม่ให้เก็บลงฐานข้อมุลว่า
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 Smart's
รู้สึกว่าผมจะไม่สามารถป้อน ข้อความใดๆได้เลยที่มี 's เช่น Smart's หรือ Value's หรือ News's ผมจะกรอกไม่ได้เลย มันจะ Error ทันที่ครับ ทั้งๆที่ผมใช้คำสั่ง
// ป้องกันการแทรก html กับ เครื่องหมาย ' " กัน Error ที่จะเกิดขึ้นกับคำสั่ง SQL
$wb_topic = htmlspecialchars($wb_topic);
$wb_question = htmlspecialchars($wb_question);
$wb_poster = htmlspecialchars($wb_poster);
ก่อนที่จะเก็บลง Database แล้วอ่ะครับ แต่พอรันกลับเครื่องตัวเองก็รันได้ปกติ แต่พอใช้ใน server จริงๆแล้วเกิด Error อ่ะครับ งง งง งง ผมมีโค๊ดมาให้ดูด้วยอ่ะครับ
/////////////////
<?php
// รับค่าตัวแปรที่ส่งมาจากฟอร์มแบบ Post มาเก็บไว้ในตัวแปรธรรมดา
$wb_topic=$_POST["topic"]; // หัวข้อกระทู้
$wb_question=$_POST["question"]; // รายละเอียดของคำถาม
$wb_poster=$_POST["poster"]; // ชื่อผู้ตั้งกระทู้ถาม
// ป้องกันการแทรก html กับ เครื่องหมาย ' " กัน Error ที่จะเกิดขึ้นกับคำสั่ง SQL
$wb_topic = htmlspecialchars($wb_topic);
$wb_question = htmlspecialchars($wb_question);
$wb_poster = htmlspecialchars($wb_poster);
// ให้ขึ้นบันทัดใหม่ กรณีที่มีการเคาะ Enter เพื่อใช้ในการแสดงข้อมูลบนหน้าเว็บ / ตรวจ เช็ครูปแบบข้อความ HTML และแทนที่รูปแบบ Tag HTML
$wb_question = eregi_replace(chr(13),"<br>",$wb_question);
?>
<?php
//กำหนดคำสั่ง SQL Statement ให้กับตัวแปร $sql_insert เพื่อทำการเพิ่มข้อมูลใหม่ลงไปในฐานข้อมูล
$sql_insert = "insert into wb_question (id_question, topic, question, poster, date_post, ip_post) ";
$sql_insert .= "values ('$currentmax', '$wb_topic', '$wb_question', '$wb_poster', '$wb_date', '$wb_ippost')";
//สั่งให้คำสั่ง SQL Statement ทำงานแล้วนำข้อมูลที่ได้เก็บไว้ที่ตัวแปร $table
$table = mysql_query($sql_insert,$conn) or die ("ไม่สามารถเพิ่มคำถามใหม่ลงในตาราง wb_question ได้เพราะ : ". mysql_error());
?>
//////////////////////
รบกวนหน่อยครับ ขอบพระคูณครับ
htmlspecialchars() มีไว้ในการแปลง tag html เป็นรหัส (จำชื่อรหัสไม่ได้
)ครับ
ทางแก้มี 2 วิธีครับ
1. ใช้ addslashes() ซึ่งใช้ในการใส่ \ นำหน้าพวกอักขระพิเศษต่างๆครับ
2. ใช้ mysql_escape_string() เพื่อใส่ \ นำหน้าพวกอักขระพิเศษที่เป็น escape string ของ mysql ครับ (แนะนำตัวนี้ถ้าใช้เพื่อใช้งานใน mysql)
ทั้ง 2 ฟังก์ชั่นจะคืนค่ามาเป็น string ครับ
ทางแก้มี 2 วิธีครับ
1. ใช้ addslashes() ซึ่งใช้ในการใส่ \ นำหน้าพวกอักขระพิเศษต่างๆครับ
2. ใช้ mysql_escape_string() เพื่อใส่ \ นำหน้าพวกอักขระพิเศษที่เป็น escape string ของ mysql ครับ (แนะนำตัวนี้ถ้าใช้เพื่อใช้งานใน mysql)
ทั้ง 2 ฟังก์ชั่นจะคืนค่ามาเป็น string ครับ
maden

Tue 15 Aug 2006 15:37:47
Tue 15 Aug 2006 15:37:47
ขอบพระคุณครับ

















