【问题标题】:PHP - Insert variables in double quote stringsPHP - 在双引号字符串中插入变量
【发布时间】:2017-04-28 20:11:19
【问题描述】:

我是新来的。我最近开始使用 PHP,我想知道如何插入变量,并将它们放入单引号中,放入双引号字符串中。 这是我尝试过的: $query = "INSERT INTO Table (Name, Activity) VALUES ('$name', '$activity');"; 但是当我检查$query 时,它包含:INSERT INTO Table (Name, Activity) VALUES (,);。我不明白为什么会这样,因为当我没有写上面的代码,而是写了这个:$query = "INSERT INTO Table (Name, Activity) VALUES ($name, $activity);";(没有单引号)时,字符串包含这个:INSERT INTO Table (Name, Activity) VALUES (Robert, Book-seller);。有人知道吗?

【问题讨论】:

  • 尝试转义单引号。
  • Rody 不认为我粗鲁,但如果你使用的是echo $query;你得到结果INSERT INTO Table (Name, Activity) VALUES (,);,第二个你得到INSERT INTO Table (Name, Activity) VALUES (Robert, Book-seller);,这不会发生,你能发布更多代码吗
  • $query 的回显之前,您是否正在运行正则表达式或一些字符串操作函数?你可以在这里看到eval.in/784497,你描述的行为是不可重现的。
  • @user2860957 确实如此,但所描述的输出永远不会出现在提供的代码中。 OP 在 echo 之前对字符串做一些事情。

标签: php mysql


【解决方案1】:

如何插入变量,并将它们放入单引号,放入双引号字符串。

不要那样做。它使您容易受到SQL injection 攻击。而是将prepared statementsthis post 中所述的绑定参数一起使用。

【讨论】:

  • Alex 你发布了答案,你知道原来的问题是什么吗?我没有,如果你这样做,请修复它,谢谢
  • 忘记原来的问题。您永远不应该编写这样的 SQL 查询。重写您的代码以使用准备好的语句。
  • 好的,所以你也不知道原来的问题,我以为我是唯一没有得到它的人
  • 是的,他的第一个查询块的结果应该至少是 INSERT INTO Table (Name, Activity) VALUES ('','');
【解决方案2】:

我试过你的说法:

$query = "INSERT INTO Table (Name, Activity) VALUES ('$name', '$activity');";

它对我很有效。我猜你需要检查你传入 $name 和 $activity 的值。 (对于书商罗伯特来说,它工作得很好)。

不过你可以试试这个。它可能会有所帮助:

$query = "INSERT INTO Table (Name, Activity) VALUES (\"$name\", \"$activity\");";

请注意:正如 Alex Howansky 所说,不要那样做。它使您容易受到 SQL 注入攻击。

希望对您有所帮助。万事如意!

【讨论】:

  • 感谢您非常有帮助的回答。对不起,如果我的问题令人困惑,但你说得对。正如您和 Alex 建议的那样,Ima 在我的代码中使用了准备好的语句。也感谢其他人的快速回答,我也祝你一切顺利!
猜你喜欢
  • 1970-01-01
  • 2014-09-18
  • 1970-01-01
  • 2018-10-17
  • 2011-01-27
  • 2013-01-17
  • 2016-04-24
  • 1970-01-01
  • 2017-09-08
相关资源
最近更新 更多