2016-09-22 118 views
0

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

考虑下面的实例篇PHP的:

的script.php

$name = 'Bill' 
$query = "SELECT * FROM a_table WHERE name='$name'"; 

我想,而不是写SQL查询在它自己的文件,包括(或其他方式)获得内容到我的脚本:

query.sql的

SELECT * FROM a_table WHERE name='$name' 

的script.php

// This doesn't work obviously 
$query = '"'.include('query.sql').'"'; 

注意,我希望能够在SQL查询中引用的PHP变量(如:$ name是建立在script.php的声明,但作为部分查询)。

+0

在编写这样的查询时注意SQL注入。请参阅:http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php?rq=1 –

+0

@ Pierre-LoupPagniez感谢您的链接。在我的情况下,所有的用户输入在被用于查询之前都被单独清理,但附带的问题/答案非常棒 –

回答

3

不错,简单的解决方案:

$sql = file_get_contents("query.sql"); 

你在哪里引用这样

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

参考变量,我建议使用PDO ...但是你可以在mysqli的做同样的事情到这等

1

query.sql的:

SELECT * FROM a_table WHERE name=:name 

的script.php:

$query = file_get_contents('path/to/query.sql'); 

然后绑定参数和执行查询。

请参阅How can I prevent SQL-injection in PHP?为什么您应该绑定变量而不是将它们连接到查询字符串中。