สอบถามการนำคำสั่งsql มาใช้ใน php

เกี่ยวกับ ปัญหาการใช้งาน การติดตั้ง ฐานข้อมูล MySql Oracle MSSQL ect...
การเขียน คำสั่ง SQL เพื่อดึกข้อมูล บอร์ดนี้ควรระบุโครงสร้างตารางของท่านในคำถามด้วยนะ

Moderator: mindphp

User avatar
WKsoft
PHP Super Hero Member
PHP Super Hero Member
Posts: 872
Joined: 30/11/2021 9:35 am

สอบถามการนำคำสั่งsql มาใช้ใน php

Post by WKsoft »

SQL - Database-1.png
SQL - Database-1.png (101.28 KiB) Viewed 627 times
จากฐานข้อมูลนี้ ทำการคิวรี่ด้วยคำสั่ง

Code: Select all

SELECT DISTINCT keyword FROM  suggest_search
WHERE  keyword LIKE '%%' AND user_id = 2
ORDER BY  id DESC;

ผลลัพธ์ที่ได้
SQL - Database-2.png
SQL - Database-2.png (40.02 KiB) Viewed 627 times
ตรงตามที่ต้องการ

แต่เมื่อนำไปใช้ในโค้ด php

Code: Select all

$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
SQL - Database-1.png (28.46 KiB) Viewed 627 times
ซึ่งไม่ตรงกับที่ไปคิวรี่ใน phpmyadmin อยากสอบถามว่าเกิดจากอะไร และจะแก้ได้อย่างไร
Last edited by WKsoft on 27/01/2022 11:40 am, edited 1 time in total.
User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 32683
Joined: 22/09/2008 6:18 pm
Contact:

Re: สอบถามการนำคำสั่ัง sql มาใช้ใน php

Post by mindphp »

ควรนับแถวข้อมูลก่อนว่ามีข้อมูลมาจากการ query ก่อน fetch

Code: Select all

if ($result->num_rows > 0) {
// TO fetch and as to array 
}
เปลี่น

Code: Select all

array_push($keyword_arr,$row['keyword']);
เป็น

Code: Select all

$keyword_arr[] = $row['keyword'];
หรือ ถ้าจะเอา id มาทำ key ของ array ด้วย

Code: Select all

$keyword_arr[$row['id']] = $row['keyword'];
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
User avatar
WKsoft
PHP Super Hero Member
PHP Super Hero Member
Posts: 872
Joined: 30/11/2021 9:35 am

Re: สอบถามการนำคำสั่ัง sql มาใช้ใน php

Post by WKsoft »

ครับจะนำไปปรับแก้ครับ

ส่วนที่สอบถามไปมีวิธีแก้รึเปล่าครับ
เพราะว่าใส่คำสั่ง เดียวกันที่คิวรี่ใน phpmyadmin เลย แต่พอเอามาคิวรี่ใน โค้ด php แล้วมันแสดงผลลัพธ์ไม่ตรงกัน
User avatar
eange08
PHP VIP Members
PHP VIP Members
Posts: 4675
Joined: 22/12/2020 10:09 am

Re: สอบถามการนำคำสั่ัง sql มาใช้ใน php

Post by eange08 »

WKsoft wrote: 27/01/2022 11:54 am ครับจะนำไปปรับแก้ครับ

ส่วนที่สอบถามไปมีวิธีแก้รึเปล่าครับ
เพราะว่าใส่คำสั่ง เดียวกันที่คิวรี่ใน phpmyadmin เลย แต่พอเอามาคิวรี่ใน โค้ด php แล้วมันแสดงผลลัพธ์ไม่ตรงกัน
เป็นที่เราใช้คำสั่ง array_push นอกจากจะเป็นการเพิ่มค่าใน array แล้ว มันจะช่วยเรียงค่ามากไปน้อยใน array ให้อีกด้วย

Code: Select all

array_push($keyword_arr,$row['keyword']);
ต้องเป็นการเก็บค่า array ตามคำแนะนำข้างต้นดูค่ะ
User avatar
WKsoft
PHP Super Hero Member
PHP Super Hero Member
Posts: 872
Joined: 30/11/2021 9:35 am

Re: สอบถามการนำคำสั่งsql มาใช้ใน php

Post by WKsoft »

ได้ลองไปแก้ไขโค้กแล้วครับ แต่ก็ยังแสดงผลได้ ไม่ตามที่ต้องการ

Code: Select all

$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
SQL - Database-1.png (25.33 KiB) Viewed 600 times
ผลที่ต้องการให้แสดง ลำดับการแสดงผลเรียงแบบนี้
SQL - Database-2.png
SQL - Database-2.png (40.26 KiB) Viewed 600 times
User avatar
WKsoft
PHP Super Hero Member
PHP Super Hero Member
Posts: 872
Joined: 30/11/2021 9:35 am

Re: สอบถามการนำคำสั่งsql มาใช้ใน php

Post by WKsoft »

Code: Select all

$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
SQL - Database-1.png (37.25 KiB) Viewed 556 times
ผลลัพธ์ที่ถูกต้อง ที่ต้องการให้แสดงตามลำดับ
SQL - Database-1.png
SQL - Database-1.png (64.86 KiB) Viewed 556 times
User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 32683
Joined: 22/09/2008 6:18 pm
Contact:

Re: สอบถามการนำคำสั่งsql มาใช้ใน php

Post by mindphp »

คำว่า จำนวน 12 แถว
มาจากไหน ขอดูโค้ด ตอน fetch ออกมาแสดงหน่อย
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
User avatar
WKsoft
PHP Super Hero Member
PHP Super Hero Member
Posts: 872
Joined: 30/11/2021 9:35 am

Re: สอบถามการนำคำสั่งsql มาใช้ใน php

Post by WKsoft »

mindphp wrote: 31/01/2022 10:15 am คำว่า จำนวน 12 แถว
มาจากไหน ขอดูโค้ด ตอน fetch ออกมาแสดงหน่อย

Code: Select all

 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 "&emsp;&emsp;&emsp;&emsp;".$sql.'<br><br>';

        if ($result->num_rows > 0) {
            echo "&emsp;&emsp;&emsp;&emsp;จำนวนแถว : ".$result->num_rows."<hr>" ;
        }

        $keyword_arr =  array();
        
        while($row = $result->fetch_assoc()) {
            $keyword_arr[] = $row['keyword'];
            echo "&emsp;&emsp;&emsp;&emsp;".$row['keyword']."<hr>";

         }
         $result->free_result();
         return  $keyword_arr;
    }
ส่วนคำสั่ง คิวรี่ ใช้คำสั่งเดียวกันเลย ต่างกันที่คิวรี่ใน phpMyAdmin กับ คิวรี่โดยผ่าน โค้ด php
Post Reply
  • Similar Topics
    Replies
    Views
    Last post

Return to “SQL - Database”

Who is online

Users browsing this forum: No registered users and 9 guests