 |
แก้ยังไงครับ gelloryYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' |
|
 |
|
|
 |
 |
|
มัน error
gelloryYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(gl_catagories,gl_img) VALUES ("1","886370_480789501988498_674138949_o.jpg")' at line 1
code
Code (PHP)
public function insert($table,$values = array())
{
if($this->tableExists($table))
{
$insert = 'INSERT INTO '.$table;
for($i = 0; $i < count($values); $i++)
{
if(is_string($values[$i]))
$values[$i] = $values[$i];
}
foreach ($values as $key => $value) {
$keys[] = $key;
$val[] = is_string($value) ? ('"' . $value . '"') : $value;
$insert .= ' (' . implode(',', $keys) . ') VALUES (' . implode(',', $val) . ')';
/*
$keys = implode(',',$key);
$values = implode(',',$value);
$insert .= '('.$keys.') VALUES ("'.$values.'")';
*
*/
}
/*
$values = implode(',',$values);
$insert .= ' VALUES ('.$values.')';
*/
$ins = @mysql_query($insert) or die (mysql_error());
if($ins)
{
return true;
}
else
{
return false;
}
}
Tag : PHP
|
|
 |
 |
 |
 |
Date :
2013-04-06 16:21:28 |
By :
kenghockey |
View :
939 |
Reply :
4 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
("1","886370_480789501988498_674138949_o.jpg")
มีความเป็นไปได้ว่าเซิร์ฟเวอร์ของคุณมีการตั้งค่า ANSI_QUOTES ไว้เป็น enabled
ซึ่งมาตรฐาน ANSI SQL ไม่ใช้ " ในการครอบสตริงครับ
ใช้แต่ ' เท่านั้น
|
 |
 |
 |
 |
Date :
2013-04-06 16:30:10 |
By :
cookiephp |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เปลี่ยนแล้วครับ
Code (PHP)
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 '(gl_catagories,gl_img) VALUES ('1','886370_480789501988498_674138949_o.jpg')' at line 1
|
 |
 |
 |
 |
Date :
2013-04-06 16:40:07 |
By :
kenghockey |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
บรรทัดที่ 17
$insert .= ' (' . implode(',', $keys) . ') VALUES (' . implode(',', $val) . ')';
Code (PHP)
$insert .= ' (' . implode(',', $keys) . ') VALUES (' . implode("','", $val) . ')';
|
 |
 |
 |
 |
Date :
2013-04-06 17:07:33 |
By :
Naizan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อ่อ งั้นคงเป็นที่โค้ด insert ของคุณแล้วล่ะครับ
พอลองสังเกตดู ผิดเพราะคุณเชื่อมต่อ SQL ในลูป
สมมติถ้าเรียก insert('test', array('a' => 1, 'b' => 2)
ผล SQL ที่ได้จะเป็น
Code (SQL)
INSERT INTO test (a) VALUES (555) (a,b) VALUES (555,666)
ซึ่งเป็น SQL ที่ error
ผมเขียนฟังก์ชั่นให้คุณใหม่เลยล่ะกันครับ ทำงานเร็วกว่า ปลอดภัยกว่า
public function insert($table,$values = array())
{
// ถ้าไม่มีตาราง $table อยู่
if (!$this->tableExists($table)) {
// ออกเลย
return false;
// แต่เอาจริงๆ นะ ผมว่าไม่จำเป็นต้องมีการตรวจตรงนี้ ไร้ประโยชน์ มีแต่ทำให้ช้าลง
// เพราะถ้า INSERT ไม่ได้เพราะไม่มีตาราง $table อยู่ มันก็เกิด error เหมือนกัน
// return false เหมือนกัน
}
// สร้างสตริงของชื่อคอลัมน์ทั้งหมด
$keys = implode('`,`', array_keys($values));
// วนลูปทุกค่า เพื่อ escape
foreach ($values as &$value) {
$value = mysql_real_escape_string($value);
}
// สร้างสตริงของ VALUES
$values = implode("','", $values);
// รัน SQL และส่งค่าที่ได้จาก mysql_query() กลับไป
// ซึ่งจะเป็น true หรือ false อย่างใดอย่างหนึ่งแน่นอนสำหรับคำสั่ง INSERT
// ไม่ต้องไปตรวจซ้ำซ้อนอย่างโค้ดเดิมของคุณ
return mysql_query("INSERT INTO `$table` (`$keys`) VALUES ('$values')");
}
|
 |
 |
 |
 |
Date :
2013-04-06 17:18:14 |
By :
cookiephp |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|