เกี่ยวกับ ปัญหาการใช้งาน การติดตั้ง ฐานข้อมูล MySql Oracle MSSQL ect...
การเขียน คำสั่ง SQL เพื่อดึกข้อมูล บอร์ดนี้ควรระบุโครงสร้างตารางของท่านในคำถามด้วยนะ
Moderator: mindphp
-
WKsoft
- PHP Super Hero Member
- โพสต์: 872
- ลงทะเบียนเมื่อ: 30/11/2021 9:35 am
โพสต์ที่ยังไม่ได้อ่าน
โดย WKsoft »
- SQL - Database-1.png (101.28 KiB) Viewed 1499 times
จากฐานข้อมูลนี้ ทำการคิวรี่ด้วยคำสั่ง
โค้ด: เลือกทั้งหมด
SELECT DISTINCT keyword FROM suggest_search
WHERE keyword LIKE '%%' AND user_id = 2
ORDER BY id DESC;
ผลลัพธ์ที่ได้
- SQL - Database-2.png (40.02 KiB) Viewed 1499 times
ตรงตามที่ต้องการ
แต่เมื่อนำไปใช้ในโค้ด php
โค้ด: เลือกทั้งหมด
$user_id = $this->user->data['user_id'];
//query คำที่ใกล้เคียงกับคำค้นหา
$sql= " SELECT DISTINCT keyword FROM suggest_search "
. "WHERE keyword LIKE '%$keyword%' AND user_id = ".$user_id
. " ORDER BY id DESC ";
//echo $sql.'<br><br>';
$result = $db->sql_query($sql);
$keyword_arr = array();
while($row = $result->fetch_assoc()) {
array_push($keyword_arr,$row['keyword']);
echo " ".$row['keyword']."<hr>";
}
ผลลัพธ์ที่แสดงออกมา ไม่ตรงกับ ที่ได้คิวรี่ไป
- SQL - Database-1.png (28.46 KiB) Viewed 1499 times
ซึ่งไม่ตรงกับที่ไปคิวรี่ใน phpmyadmin อยากสอบถามว่าเกิดจากอะไร และจะแก้ได้อย่างไร
แก้ไขล่าสุดโดย
WKsoft เมื่อ 27/01/2022 11:40 am, แก้ไขไปแล้ว 1 ครั้ง.
-
mindphp
- ผู้ดูแลระบบ MindPHP
- โพสต์: 41356
- ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
-
ติดต่อ:
โพสต์ที่ยังไม่ได้อ่าน
โดย mindphp »
ควรนับแถวข้อมูลก่อนว่ามีข้อมูลมาจากการ query ก่อน fetch
โค้ด: เลือกทั้งหมด
if ($result->num_rows > 0) {
// TO fetch and as to array
}
เปลี่น
เป็น
หรือ ถ้าจะเอา id มาทำ key ของ array ด้วย
โค้ด: เลือกทั้งหมด
$keyword_arr[$row['id']] = $row['keyword'];
-
WKsoft
- PHP Super Hero Member
- โพสต์: 872
- ลงทะเบียนเมื่อ: 30/11/2021 9:35 am
โพสต์ที่ยังไม่ได้อ่าน
โดย WKsoft »
ครับจะนำไปปรับแก้ครับ
ส่วนที่สอบถามไปมีวิธีแก้รึเปล่าครับ
เพราะว่าใส่คำสั่ง เดียวกันที่คิวรี่ใน phpmyadmin เลย แต่พอเอามาคิวรี่ใน โค้ด php แล้วมันแสดงผลลัพธ์ไม่ตรงกัน
-
eange08
- PHP VIP Members
- โพสต์: 16374
- ลงทะเบียนเมื่อ: 22/12/2020 10:09 am
โพสต์ที่ยังไม่ได้อ่าน
โดย eange08 »
WKsoft เขียน: ↑27/01/2022 11:54 am
ครับจะนำไปปรับแก้ครับ
ส่วนที่สอบถามไปมีวิธีแก้รึเปล่าครับ
เพราะว่าใส่คำสั่ง เดียวกันที่คิวรี่ใน phpmyadmin เลย แต่พอเอามาคิวรี่ใน โค้ด php แล้วมันแสดงผลลัพธ์ไม่ตรงกัน
เป็นที่เราใช้คำสั่ง array_push นอกจากจะเป็นการเพิ่มค่าใน array แล้ว มันจะช่วยเรียงค่ามากไปน้อยใน array ให้อีกด้วย
ต้องเป็นการเก็บค่า array ตามคำแนะนำข้างต้นดูค่ะ
-
WKsoft
- PHP Super Hero Member
- โพสต์: 872
- ลงทะเบียนเมื่อ: 30/11/2021 9:35 am
โพสต์ที่ยังไม่ได้อ่าน
โดย WKsoft »
ได้ลองไปแก้ไขโค้กแล้วครับ แต่ก็ยังแสดงผลได้ ไม่ตามที่ต้องการ
โค้ด: เลือกทั้งหมด
$user_id = $this->user->data['user_id'];
$sql= " SELECT DISTINCT keyword FROM phpbb_m_suggest_search "
. "WHERE keyword LIKE '%$keyword%' AND user_id = ".$user_id
. " ORDER BY id DESC ";
$result = $db->sql_query($sql);
if ($result->num_rows > 0) {
echo "จำนวนแถว : ".$result->num_rows."<hr>" ;
}
$keyword_arr = array();
while($row = $result->fetch_assoc()) {
$keyword_arr[] = $row['keyword'];
echo " ".$row['keyword']."<hr>";
}
$result->free_result();
ผลที่ได้
- SQL - Database-1.png (25.33 KiB) Viewed 1472 times
ผลที่ต้องการให้แสดง ลำดับการแสดงผลเรียงแบบนี้
- SQL - Database-2.png (40.26 KiB) Viewed 1472 times
-
WKsoft
- PHP Super Hero Member
- โพสต์: 872
- ลงทะเบียนเมื่อ: 30/11/2021 9:35 am
โพสต์ที่ยังไม่ได้อ่าน
โดย WKsoft »
โค้ด: เลือกทั้งหมด
$sql_array = array(
'SELECT' => ' DISTINCT a.keyword',
'FROM' => array(
'phpbb_m_suggest_search' => 'a',
),
'WHERE' => ' a.keyword LIKE '."'%".$keyword."%' ".' AND a.user_id = '.$user_id ,
'ORDER_BY' => ' a.id DESC' ,
);
$sql = $db->sql_build_query('SELECT', $sql_array);
$result = $this->db->sql_query($sql);
ลองเปลี่ยนรูปแบบมาใช้แบบของ phpbb แต่ก็แสดงผลลัพธ์ได้ไม่ถูกต้อง
- SQL - Database-1.png (37.25 KiB) Viewed 1428 times
ผลลัพธ์ที่ถูกต้อง ที่ต้องการให้แสดงตามลำดับ
- SQL - Database-1.png (64.86 KiB) Viewed 1428 times
-
mindphp
- ผู้ดูแลระบบ MindPHP
- โพสต์: 41356
- ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
-
ติดต่อ:
โพสต์ที่ยังไม่ได้อ่าน
โดย mindphp »
คำว่า จำนวน 12 แถว
มาจากไหน ขอดูโค้ด ตอน fetch ออกมาแสดงหน่อย
-
WKsoft
- PHP Super Hero Member
- โพสต์: 872
- ลงทะเบียนเมื่อ: 30/11/2021 9:35 am
โพสต์ที่ยังไม่ได้อ่าน
โดย WKsoft »
mindphp เขียน: ↑31/01/2022 10:15 am
คำว่า จำนวน 12 แถว
มาจากไหน ขอดูโค้ด ตอน fetch ออกมาแสดงหน่อย
โค้ด: เลือกทั้งหมด
public function search_show_keyword($keyword) {
global $db;
$user_id = $this->user->data['user_id'];
//query คำที่ใกล้เคียงกับคำค้นหา
$sql_array = array(
'SELECT' => ' DISTINCT a.keyword',
'FROM' => array(
'phpbb_m_suggest_search' => 'a',
),
'WHERE' => ' a.keyword LIKE '."'%".$keyword."%' ".' AND a.user_id = '.$user_id ,
'ORDER_BY' => ' a.id DESC' ,
);
$sql = $db->sql_build_query('SELECT', $sql_array);
$result = $this->db->sql_query($sql);
echo "    ".$sql.'<br><br>';
if ($result->num_rows > 0) {
echo "    จำนวนแถว : ".$result->num_rows."<hr>" ;
}
$keyword_arr = array();
while($row = $result->fetch_assoc()) {
$keyword_arr[] = $row['keyword'];
echo "    ".$row['keyword']."<hr>";
}
$result->free_result();
return $keyword_arr;
}
ส่วนคำสั่ง คิวรี่ ใช้คำสั่งเดียวกันเลย ต่างกันที่คิวรี่ใน phpMyAdmin กับ คิวรี่โดยผ่าน โค้ด php
-
WKsoft
- PHP Super Hero Member
- โพสต์: 872
- ลงทะเบียนเมื่อ: 30/11/2021 9:35 am
โพสต์ที่ยังไม่ได้อ่าน
โดย WKsoft »
WKsoft เขียน: ↑31/01/2022 10:01 am
โค้ด: เลือกทั้งหมด
public function search_show_keyword($keyword) {
global $db;
$user_id = $this->user->data['user_id'];
//query คำที่ใกล้เคียงกับคำค้นหา
$sql_array = array(
'SELECT' => ' DISTINCT a.keyword',
'FROM' => array(
'phpbb_m_suggest_search' => 'a',
),
'WHERE' => ' a.keyword LIKE '."'%".$keyword."%' ".' AND a.user_id = '.$user_id ,
'ORDER_BY' => ' a.id DESC' ,
);
$sql = $db->sql_build_query('SELECT', $sql_array);
$result = $this->db->sql_query($sql);
echo "    ".$sql.'<br><br>';
if ($result->num_rows > 0) {
echo "    จำนวนแถว : ".$result->num_rows."<hr>" ;
}
$keyword_arr = array();
while($row = $result->fetch_assoc()) {
$keyword_arr[] = $row['keyword'];
echo "    ".$row['keyword']."<hr>";
}
$result->free_result();
return $keyword_arr;
}
ส่วนคำสั่ง คิวรี่ ใช้คำสั่งเดียวกันเลย ต่างกันที่คิวรี่ใน phpMyAdmin กับ คิวรี่โดยผ่าน โค้ด php
แก้ได้แล้วครับ
แก้ไขโค้ดส่วนนี้
เป็น
โค้ด: เลือกทั้งหมด
$result = $this->db->sql_query_limit($sql,5,0);
-
-
- 6 ตอบกลับ
- 1922 แสดง
-
โพสต์ล่าสุด โดย บุคคลทั่วไป
22/05/2022 9:20 pm
-
-
- 0 ตอบกลับ
- 1038 แสดง
-
โพสต์ล่าสุด โดย tsukasaz
06/07/2021 6:28 pm
-
-
- 1 ตอบกลับ
- 797 แสดง
-
โพสต์ล่าสุด โดย mindphp
19/06/2022 7:23 am
-
-
- 1 ตอบกลับ
- 1374 แสดง
-
โพสต์ล่าสุด โดย thatsawan
14/05/2019 3:52 pm
-
-
- 2 ตอบกลับ
- 1314 แสดง
-
โพสต์ล่าสุด โดย Ittichai_chupol
09/05/2019 7:58 pm
สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 58