首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP-MySQL中SELECT参数值的编码

PHP-MySQL中SELECT参数值的编码
EN

Stack Overflow用户
提问于 2009-02-05 18:22:23
回答 6查看 11K关注 0票数 1

下面的Alt A是来自php-mysql教程的语句。它按其应有的方式工作。

我发现id-value相当模糊,并测试了alt B。这也行得通!

alt A的id值有什么意义?

MySQL 5.0.51、PHP5.2.6

代码语言:javascript
复制
// Alt A :  
$sql = "SELECT * FROM example WHERE id = '".$q."'";  
// Alt B :  
$sql = "SELECT * FROM example WHERE id = $q";  
EN

回答 6

Stack Overflow用户

发布于 2009-02-05 18:27:21

这只是从静态数据和可变数据构建字符串的两种不同方法。

备选A使用连接,或使用连接运算符连接字符串和变量标记。

备选方案B使用变量扩展,其中双引号分隔的字符串中的变量在计算时扩展为它们的值。

两者都不一定更好或更好,但如果您必须使用单引号分隔的字符串,那么您将需要使用替代A。

当然,与使用绑定参数构建SQL查询相比,这两种方法都不可取,因为不这样做会使您容易受到SQL注入攻击。

票数 1
EN

Stack Overflow用户

发布于 2009-02-05 18:27:37

在“Alt A”中使用这个例子有两个原因。首先,如果字符串括在单引号'‘中,则变量的名称将在字符串中使用,而不是它的值。

代码语言:javascript
复制
$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

其次,将字符串与函数调用的结果组合在一起很有用。

代码语言:javascript
复制
"SELECT * FROM table WHERE id = '".getPrimaryId()."'"
票数 1
EN

Stack Overflow用户

发布于 2009-02-05 18:40:35

除了前面所说的之外,我发现如果我正在编写一个查询,最好是这样编写:

$sql = "SELECT * FROM table WHERE uid=“$uid。“LIMIT 1";

这样编写SQL的原因是1.php查询不必解析查询中的MySQL变量,2您现在可以轻松地读取和管理查询。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/517201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档