下面的Alt A是来自php-mysql教程的语句。它按其应有的方式工作。
我发现id-value相当模糊,并测试了alt B。这也行得通!
alt A的id值有什么意义?
MySQL 5.0.51、PHP5.2.6
// Alt A :
$sql = "SELECT * FROM example WHERE id = '".$q."'";
// Alt B :
$sql = "SELECT * FROM example WHERE id = $q"; 发布于 2009-02-05 18:27:21
这只是从静态数据和可变数据构建字符串的两种不同方法。
备选A使用连接,或使用连接运算符连接字符串和变量标记。
备选方案B使用变量扩展,其中双引号分隔的字符串中的变量在计算时扩展为它们的值。
两者都不一定更好或更好,但如果您必须使用单引号分隔的字符串,那么您将需要使用替代A。
当然,与使用绑定参数构建SQL查询相比,这两种方法都不可取,因为不这样做会使您容易受到SQL注入攻击。
发布于 2009-02-05 18:27:37
在“Alt A”中使用这个例子有两个原因。首先,如果字符串括在单引号'‘中,则变量的名称将在字符串中使用,而不是它的值。
$id = 7;
'SELECT * FROM table WHERE id = $id' //works out to: WHERE id = $id
"SELECT * FROM table WHERE id = $id" //works out to: WHERE id = 7其次,将字符串与函数调用的结果组合在一起很有用。
"SELECT * FROM table WHERE id = '".getPrimaryId()."'"发布于 2009-02-05 18:40:35
除了前面所说的之外,我发现如果我正在编写一个查询,最好是这样编写:
$sql = "SELECT * FROM table WHERE uid=“$uid。“LIMIT 1";
这样编写SQL的原因是1.php查询不必解析查询中的MySQL变量,2您现在可以轻松地读取和管理查询。
https://stackoverflow.com/questions/517201
复制相似问题