PHP-sql语句中有变量引号该怎么写

发布于 2017-01-14 08:25:48 字数 108 浏览 1245 评论 4

"INSERT INTO user (open_id) VALUES ('".$fromUsername."')"

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

虐人心 2017-10-06 16:13:18

php中,单引号中间的内容是直接当做字符串来解析的。就算中间有变量也不会去解析。才会有下面这样写
$sql = 'INSERT INTO user (open_id) VALUES (''.$fromUsername.'')';
如果你按照下面写,你的变量会不被识别
$sql = 'INSERT INTO user (open_id) VALUES ('$fromUsername')';

双引号,解析的时候会先遍历字符串,找出变量等。。所以效率会比单引号慢
就可以直接
$sql = “INSERT INTO user (open_id) VALUES ('$fromUsername')”;

$sql = “INSERT INTO user (open_id) VALUES ('{$fromUsername}')”;

所以你的变量怎么写,关键取决于你 是用单引号还是双引号。

偏爱自由 2017-07-10 07:54:02

可以这么写,$sql = "INSERT INTO user (open_id) VALUES ('{$fromUsername}')";。当然,这样直接由变量去填充sql语句是很容易被注入的。建议用MYSQLI或者PDO占位符预处理来处理sql。

甜柠檬 2017-05-29 09:12:44

方法一:

 <?php
/* Execute a prepared statement by binding PHP variables */
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
FROM fruit
WHERE calories < :calories AND colour = :colour');
$sth->bindParam(':calories', $calories, PDO::PARAM_INT);
$sth->bindParam(':colour', $colour, PDO::PARAM_STR, 12);
$sth->execute();
?>

方法二:

 <?php
/* Execute a prepared statement by binding PHP variables */
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
FROM fruit
WHERE calories < ? AND colour = ?');
$sth->bindParam(1, $calories, PDO::PARAM_INT);
$sth->bindParam(2, $colour, PDO::PARAM_STR, 12);
$sth->execute();
?>

所以你的代码直接写成

 INSERT INTO user (open_id) VALUES (?);

偏爱自由 2017-02-20 20:01:55

@jerryjobs 说的是 PDO 预处理的 步骤. 配合PDO的单例,推荐这么写.

如果只是单纯的 拼接sql的话

"INSERT INTO user (open_id) VALUES ('{$fromUsername}')"

这么写也是一种选择, 单引号看需要.

最好在代码里 保持一种风格的写法, 易于理解

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文