【问题标题】:Print values of varriable stored in MySql database打印存储在 MySql 数据库中的变量值
【发布时间】:2013-06-20 13:35:59
【问题描述】:

我将变量存储在 MySql 数据库中,并希望在其中回显字符串和变量。变量应该给出在 php 代码页中设置的值。

变量$MyVarr"This is $MyVarr" 的形式存储在db 中,然后在字符串中回显。

$MyString = $rw['MyStoredVarr'];
echo $MyString;

然而这不是返回$MyVarr的值,而是返回整个字符串

"This is $MyVarr"

我该如何解决这个问题。

编辑::

我已经尝试过这样做,将"This is {$MyVarr}" 存储在数据库中,但仍然无法解析变量。

【问题讨论】:

  • 这是一个等待发生的安全漏洞。
  • 你存储了 string "This is $MyVarr",你会得到同样的结果。让“$MyVarr”评估为变量值几乎没有任何明智的方法。
  • 你的意思是在数据库中存储变量不是一个好习惯
  • 为什么要在数据库中添加一个变量?你想用这种方式解决什么问题?

标签: php mysql string mysqli echo


【解决方案1】:

仅仅因为来自某个地方的字符串包含一个美元后跟某个名称并不意味着它会被变量值替换为任何机会。那将是混乱!一些用户在您的 Web 表单中键入“$foo”,字符串通过您的系统,最后它被变量值替换?不,那是一场等待发生的灾难。

变量替换只发生在用源代码编写的字符串字面量,即:

$foo = 42;
$bar = "Hi, I'm $foo";

这里不会发生:

$foo = 42;
$bar = $_POST['bar'];  // Hi, I'm $foo

或其他任何地方。

如果存储在数据库中的字符串中有可变部分,则需要手动替换这些部分。例如:

$string = getFromDatabase(); // e.g.: "Hi, I'm %foo%"
$string = str_replace('%foo%', 42, $string);

【讨论】:

  • 感谢您的洞察力,我将确保永远不会这样做。我想我也会尝试@rohan-kumar 方法,它和你的一样好
  • 他的建议非常不同,因为他在将结果存储到数据库之前替换了变量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-09
  • 2014-09-08
  • 2022-08-17
  • 2021-12-06
相关资源
最近更新 更多