【问题标题】:PHP variables in mysql queriesmysql 查询中的 PHP 变量
【发布时间】:2009-11-11 12:14:57
【问题描述】:

我正在使用 mysql 和 PHP,我只是想知道这个查询是否,

$query = "UPDATE tblName SET field='$fieldValue' WHERE field2='$fieldValue2'"
会导致 mysql 出现内存不足错误。这个查询
$query = "UPDATE tblName SET field='".$fieldValue."' WHERE field2='".$fieldValue2."'"
会比前一个查询消耗更少的内存吗?

我收到此错误:内存不足(需要 nnnnnnn 字节)及其指向与上述第一个格式相同的查询。

谢谢。

【问题讨论】:

  • 不是答案,只是一个好建议:永远不要使用$var = "Text $var text";。那是非常糟糕和可怕的编程风格,每次我看到它时我的眼睛都会不停地跳出来。维护始终正确转义的代码更安全,甚至更容易。仅仅因为你能做到并不意味着它是好的风格。所以看在上帝的份上:逃避你的变量!总是!
  • 哦.. 感谢您的编程技巧。下次我会试着记住它。
  • ApoY2k,你过分夸大了。当然,逃避用户输入,但说 $var = "Text $var text"; 很糟糕是错误的。

标签: php mysql apache


【解决方案1】:

就 MySQL 而言,这两个字符串是相同的。

$fieldValue$fieldValue2 中的这些值有多大?如果它们是多兆字节,则尝试为 $query 变量分配空间可能会超出您的 PHP 内存限制 - 如果您正在处理大数据,也许您需要增加它。

【讨论】:

  • $fieldValue 和 $fieldValue2 的值都不大。反正还没有。无论如何,谢谢,我试着增加限制
【解决方案2】:

如果你这样编码,this 就会发生。请不要这样编码。

【讨论】:

  • 发布的代码并未指出字段值的来源 - 变量中的值很可能已经经过适当的预处理以进行验证+转义。
  • 可能,但不太可能。称之为预感^^
  • @Dav 不,即使在这种情况下你也错了。使用准备好的语句。无论您做什么,都不要使用字符串连接。
【解决方案3】:

两个字符串是相同的,一个使用内联插值,另一个使用字符串连接。我认为您的问题必须在其他地方找到。

【讨论】:

    【解决方案4】:

    内存不足错误可能是由于这些变量中的值太长而引起的。如果是这种情况,您应该查看准备好的语句,因为它们可以处理比简单查询更大的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-26
      • 1970-01-01
      • 2014-12-14
      • 2016-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多