Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:包含一个包含$variables的SQL查询_Php_Mysql_Sql - Fatal编程技术网

PHP:包含一个包含$variables的SQL查询

PHP:包含一个包含$variables的SQL查询,php,mysql,sql,Php,Mysql,Sql,我真的不喜欢在PHP中编写SQL查询 给出以下PHP示例: script.php $name = 'Bill' $query = "SELECT * FROM a_table WHERE name='$name'"; // This doesn't work obviously $query = '"'.include('query.sql').'"'; 我希望将sql查询写入它自己的文件中,并将内容包括(或以其他方式)到脚本中: query.sql SELECT * FROM a_tabl

我真的不喜欢在PHP中编写SQL查询

给出以下PHP示例:

script.php

$name = 'Bill'
$query = "SELECT * FROM a_table WHERE name='$name'";
// This doesn't work obviously
$query = '"'.include('query.sql').'"';
我希望将sql查询写入它自己的文件中,并将内容包括(或以其他方式)到脚本中:

query.sql

SELECT * FROM a_table WHERE name='$name'
script.php

$name = 'Bill'
$query = "SELECT * FROM a_table WHERE name='$name'";
// This doesn't work obviously
$query = '"'.include('query.sql').'"';

请注意,我希望能够在SQL查询中引用PHP变量(例如:$name在script.PHP中声明,但用作查询的一部分)

漂亮而简单的解决方案:

 $sql = file_get_contents("query.sql");
为了引用变量,我建议在引用这样的变量时使用PDO

$query = $db->query( "SELECT x FROM x WHERE x = :example")
$query->execute(array("example"=>$value));

…但您可以在mysqli中执行类似的操作,等等。

漂亮而简单的解决方案:

 $sql = file_get_contents("query.sql");
为了引用变量,我建议在引用这样的变量时使用PDO

$query = $db->query( "SELECT x FROM x WHERE x = :example")
$query->execute(array("example"=>$value));

…但是您可以在mysqli中执行类似的操作,等等。

query.sql:

SELECT * FROM a_table WHERE name=:name
$query = file_get_contents('path/to/query.sql');
script.php:

SELECT * FROM a_table WHERE name=:name
$query = file_get_contents('path/to/query.sql');
然后绑定参数并执行查询


请参阅,了解为什么应该绑定变量而不是将它们连接到查询字符串中。

query.sql:

SELECT * FROM a_table WHERE name=:name
$query = file_get_contents('path/to/query.sql');
script.php:

SELECT * FROM a_table WHERE name=:name
$query = file_get_contents('path/to/query.sql');
然后绑定参数并执行查询


有关为什么应该绑定变量而不是将变量连接到查询字符串中的信息,请参见。

编写此类查询时,请注意SQL注入。请看:@Pierre LoupPagniez谢谢你的链接。在我的例子中,所有用户输入在用于查询之前都是单独清理的,但在编写此类查询时,请注意附带的问题/答案。请看:@Pierre LoupPagniez谢谢你的链接。在我的例子中,所有用户输入在用于查询之前都被单独清理,但是附带的问题/答案非常棒