จะเพิ่ม ' (Apostrophe) บนคำสั่ง SQL ได้อย่างไรครับ
\' ใส่ backslash นำหน้า $text = 'my Univercity\'s Symbol is XX';
Code (PHP)
$xxx=" 'น้องพลอย','น้องอั้ม','น้องชมพู่' ";
$SQL="SELECT * FROM table WHERE name IN ($xxx)";
//หรือ
$SQL="SELECT * FROM table WHERE name IN ( 'น้องพลอย','น้องอั้ม','น้องชมพู่')";
ใส่ได้ตรงๆ เพราะ เริ่มต้นด้วย double quote ไม่ต้องใส่ escape code
หรือ
Code (PHP)
$xxx=" 'น้องพลอย','น้องอั้ม','น้องชมพู่' ";
$SQL=<<<SQL
SELECT * FROM table WHERE name IN ($xxx)
SQL;
ประวัติการแก้ไข 2015-01-18 17:34:17 2015-01-18 17:34:44 2015-01-18 17:35:20 2015-01-18 17:36:09 2015-01-18 17:40:38
Date :
2015-01-18 17:33:12
By :
Chaidhanan
Code (SQL)
in (concat('''', REPLACE(XXX, ',', ''',''') , '''' ));
แต่ผมว่ามันผิดนะ เปลี่ยนเป็นอย่างอื่นดีกว่าไหมครับ
concat(',', XXX,',') like concat( '%,', name , ',%')
ปล. ไม่แน่ใจว่า in มัน ใช้ กํบ string แบบนั้นหรือเปล่า
ประวัติการแก้ไข 2015-01-18 17:48:33 2015-01-18 17:49:05 2015-01-18 17:51:43
Date :
2015-01-18 17:45:38
By :
Chaidhanan
Code (SQL)
where concat(',', XXX,',') like concat( '%,', name , ',%')
วิธีนี้ไม่น่างงนะครับ
Date :
2015-01-18 17:54:04
By :
Chaidhanan
ขออนุญาตถามต่อหน่อยนะครับ ทีนี้เจอปัญหาว่า ทำใมผมเรียก echo $row['product.id']; มันไม่ออกครับ
โดยโครงสร้างของตารางทั้ง2 (productและwebboard_post) มีฟิลล์ชื่อ ID เหมือนกัน ซึ่งเมื่อผมเรียก
echo $row['id']; ---> จะได้ค่า id ของตาราง webboard_post
echo $row['product.id']; ---> ไม่ได้อะไรออกมาเป็นค่าว่าง
รบกวนอีกครั้งด้วยนะครับ
Code (PHP)
$sql_product = "SELECT product.* , webboard_post.* FROM product INNER JOIN webboard_post ON ( product.id IN ($about_product) ) WHERE webboard_post.id='$id' ";
$result_product=mysql_query($sql_product)or die(mysql_error());
$num_product=mysql_num_rows($result_product);
$iproduct=0;
while($iproduct<$num_product) {
$row=mysql_fetch_array($result_product);
echo $row['id'];
$iproduct++; }
ปล. ชื่อฟิลล์อื่นๆที่ไม่ซ้ำกันมันก็มาตามตัวที่เรียกหมดครับ มีปัญหาอยู่กับฟิลล์ที่ชื่อเหมือนกัน
ประวัติการแก้ไข 2015-01-18 18:17:09
Date :
2015-01-18 18:13:27
By :
meannerss
ก็ print_r(); ออกมาดูสิครับ หรือไม่ก็ใส่ชื่อเล่นให้มันตอน query (SELECT product.id as ProductID, .... FROM ...)
ถ้าเราไม่ต้องการค่าของฟิลด์ทุกฟิลด์ โดยส่วนตัวแล้วผมจะดึงค่ามาเท่าที่จำเป็นต้องใช้ มันจะทำงานได้เร็วกว่า SELECT * FROM ...
แล้วก็ตอน FETCH ข้อมูล ผมจะไม่ทำอย่างคุณ มันดูมีหลายขั้นตอน(ไม่รู้มีความจำเป็นหรือไม่?) ผมก็เขียนประมาณนี้
Code (PHP)
$sql_product = "SELECT product.* , webboard_post.* FROM product INNER JOIN webboard_post ON ( product.id IN ($about_product) ) WHERE webboard_post.id='$id' ";
$result_product=mysql_query($sql_product)or die(mysql_error());
$iproduct=0;
while($row=mysql_fetch_array($result_product)) {
print_r($row);
$iproduct++; }
ประวัติการแก้ไข 2015-01-18 21:11:31
Date :
2015-01-18 21:07:45
By :
arm8957
ปัญหาคือเอ่อ มันซับซ้อนซ่อนเงื่อนมากครับ...
ผมพยายามย่อที่สุดแล้ว มันเลยดูว่าแก้ง่าย T__T
เอาเป็นว่าผมทำได้ละครับ ด้วยวิธีเปลี่ยนชื่อฟิลล์มันซะเลย ตั้งให้ไม่เหมือนกัน หมดปัญหา 55
ส่วนเรื่องทำใมผมใช้ หลายขั้นตอน ไม่ใช้
while($row=mysql_fetch_array($result_product)) {
ผมมีเหตุผลนะ ผมต้องนำรอบของ i ไปออกพวกเปิดปิด tr td div สี เสียง แสง ต่างๆด้วยครับ บางทีหาร 5 เศษ 2 ให้สุ่มรูป ใช้ย่อข้างบนแล้วปวดหัวครับ เลยไม่ค่อยใช้โค้ดย่อตัวนี้
Date :
2015-01-18 22:49:38
By :
meannerss
Load balance : Server 02