#php #mysql #sql #pdo #prepared-statement
#php #mysql — сервер #sql #pdo #подготовленное заявление #mysql
Вопрос:
В моем проекте я использую множество запросов pdo, особенно подготовленную инструкцию, из-за того, что мои файлы выглядят так плохо. Чтобы очистить мои файлы, я бы выполнил sql-файл в who was write my prepared statement и где-нибудь мои переменные и получил бы мои результирующие данные.
Это для prod Windows Server с PHP 7.2 (у меня включены mysqli и pdo_mysql), Apache 2.4. Я попытался выполнить sql-файл, все нормально, но idk, как это работает с подготовленным оператором и его переменными / bind, и действительно ли это возможно в 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 amp;= 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)
)
Комментарии:
1. Почему бы и нет, возможно, отличная идея. Но в чем вопрос?
2. Итак, str_replace звучит просто. Хотя похоже, что ваш код не допускает многострочных запросов.
3. @miken32 Как я могу разрешить многострочные запросы? Я знал, что могу написать этот запрос онлайн, но я бы использовал sql.file для выполнения запроса с привязкой для большей эргономичности. PS: Прошу прощения за мой английский, это не мой родной язык.