簡體   English   中英

帶有內連接 SQL 語句的預准備語句中的 SQL

[英]SQL in a prepared statement with inner join SQL statement

我的查詢正在運行,但我不知道如何將其放入准備好的語句中 這是我的查詢(正在運行)

SELECT P.first_name, P.middle_name, P.last_name, P.lrn, P.section
FROM students P INNER JOIN student_load C ON P.lrn = C.lrn
WHERE subject_code = 12332654

這是我准備好的聲明(我是准備好的聲明的新手,所以我不太了解)

function get_total_all_records()
{
     include('../config.php');

    //IM NOT SURE IF THE PROBLEM IS HERE($statement)
    $statement = $connection->prepare("SELECT P.first_name, P.middle_name, 
                                        P.last_name, P.lrn, P.section
                                        FROM students P 
                                            INNER JOIN student_load C ON P.lrn = C.lrn");
     $statement->execute();
     $result = $statement->fetchAll();
     return $statement->rowCount();
}

$query = '';
$output = array();

// OR IF THE PROBLE IS HERE($query)
$query = "SELECT P.first_name, P.middle_name, P.last_name, P.lrn, P.section
          FROM students P INNER JOIN student_load C ON P.lrn = C.lrn
          WHERE subject_code = 12332654";
if(isset($_POST["search"]["value"])){
    $query .= 'AND ( lrn LIKE "%'.$_POST["search"]["value"].'%"
               OR teacher LIKE "%'.$_POST["search"]["value"].'%"
               OR sem LIKE "%'.$_POST["search"]["value"].'%" )';
}

准備查詢的要點之一是您可以為要用數據替換的部分使用參數。 這有助於保護您免受SQL 注入攻擊,而SQL 注入攻擊則不會將變量連接到字符串中。

由於您的第一個查詢不需要參數,因此可以很高興地使用簡單的->query()運行,但第二個->query()最好使用准備和執行來運行


$params = [':subjcode'=>$subject_code];

$query = "SELECT P.first_name, P.middle_name, P.last_name, P.lrn, P.section
          FROM students P INNER JOIN student_load C ON P.lrn = C.lrn
          WHERE subject_code = :subjcode ";

if(isset($_POST["search"]["value"])){

    $query .= 'AND ( lrn LIKE :s1
               OR teacher LIKE :s2
               OR sem LIKE :s3 )';

    $params = array_merge($params, 
                            [':s1'=> '%' . $_POST["search"]["value"] . '%'],
                            [':s2'=> '%' . $_POST["search"]["value"] . '%'],
                            [':s3'=> '%' . $_POST["search"]["value"] . '%']
                        );

}

$stmt = $connection->prepare($query);
$stmt->execute($params);

注意我還在:subjcode ";之后添加了一個空格:subjcode ";這在您的原始查詢中是缺失的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM