PHP:包含一个包含$variables的SQL查询
我真的不喜欢在PHP中编写SQL查询 给出以下PHP示例: script.phpPHP:包含一个包含$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
$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谢谢你的链接。在我的例子中,所有用户输入在用于查询之前都被单独清理,但是附带的问题/答案非常棒