在带有参数/变量的* .sql文件中使用pdo在php中执行动态查询

时间:2019-04-08 17:27:36

标签: php mysql sql pdo prepared-statement

在我的项目中,我使用了很多pdo查询,尤其是准备好的语句,因为我的文件看起来很糟糕。为了清理我的文件,我将在谁编写了我准备好的语句的地方以及我的变量的某个地方执行sql文件,并获取我的结果数据。

它用于带有PHP 7.2(我具有mysqli和pdo_mysql启用),Apache 2.4的产品Windows Server。我试过执行一个sql文件,这个词很好,但请问它是如何与准备好的语句及其变量/绑定一起工作的,以及在php中是否真的可行。

[php]
//1 - execute a normal sql file (no prepared)

function executeSqlFile($filesql){
$req = file_get_contents($filesql);
Sql($req);
}

//2 -  my try to execute a prepared sql file

function executeSqlPreparedFile($filesql) {
  $query = file_get_contents($filesql);
  $array = explode("\n", $query);
  $b = true;
  for ($i=0; $i < count($array) ; $i++) {
    $str = $array[$i];
      if ($str != '') {
        $str .= ';';
        $b &= mysql_query($str);  
      }  
  }

return $b;
}

有关包含在query.sql中的跟随代码:

SELECT 
race1.start_time, 
race1.finish_time, 
race1.penalty, 
race1.result_time, 
competitors.number, 
competitors.name, 
competitors.firstname, 
competitors.club_abrev 
    FROM race1 
        INNER JOIN competitors 
            ON race1.number = competitors.number 
WHERE  competitors.ishere = 1 
AND competitors.isfinish = 1
AND competitors.categorie_number = $categorie_number
    ORDER BY competitors.sex, 
    competitors.categorie_number, 
    race1.result_time ASC

我会使用=>

之类的东西
execute(PATH/query.sql, array(
'categorie_number' => $categorie_key,
'bind_parameter' => $value_during_the_execution)
)

0 个答案:

没有答案