Php 带有内部联接SQL语句的准备语句中的SQL

Php 带有内部联接SQL语句的准备语句中的SQL,php,sql,inner-join,Php,Sql,Inner Join,我的查询正在运行,但我不知道如何将其放入准备好的语句中 这是我的问题(工作) 这是我准备好的陈述(我对准备好的陈述不熟悉,所以我知道的不多) 准备查询的要点之一是,可以为要替换为数据的零件使用参数。这有助于保护将变量连接到字符串中时不受影响的情况 由于第一个查询不需要参数,因此可以使用简单的->query()运行它,但第二个查询最好使用prepare和execute来运行 $params = [':subjcode'=>$subject_code]; $query = "SE

我的查询正在运行,但我不知道如何将其放入准备好的语句中 这是我的问题(工作)

这是我准备好的陈述(我对准备好的陈述不熟悉,所以我知道的不多)


准备查询的要点之一是,可以为要替换为数据的零件使用参数。这有助于保护将变量连接到字符串中时不受影响的情况

由于第一个查询不需要参数,因此可以使用简单的
->query()
运行它,但第二个查询最好使用prepare和execute来运行


$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);
注意:我还在原始查询中缺少的
:subcode“
后面添加了一个空格


使用占位符代替每个值。然后绑定值。例如,而不是像“%”这样的
。$\u POST[“search”][“value”]。%%“
使用
像?
然后放入
“%”。$\u POST[“search”][“value”]“%”
放入一个数组,并将该数组传递到
execute
函数中。查询正在工作,但当我将其用于其余代码时,它不会显示任何结果。您好,这是一个新问题。请问一个新问题。顺便说一句,新代码中充满了简单的语法错误。我会将您的问题回滚到其原始状态。
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"].'%" )';
}

$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);