php使用eval获取objects属性值
我试图设置一个函数,该函数将动态更新db中的对象属性,而不更新整个对象php使用eval获取objects属性值,php,Php,我试图设置一个函数,该函数将动态更新db中的对象属性,而不更新整个对象 $sql = "UPDATE " . self::$table_name . " SET "; $sql .= "$attribute = '" . eval("\$this->$attribute;") . "'"; $sql .= " WHERE ..."; 我似乎无法使用此eval(\$this->$attribute;)生成对象属性值。属性中有一个值,它是公共属性 谢谢 $attribute是一个函数变量,它
$sql = "UPDATE " . self::$table_name . " SET ";
$sql .= "$attribute = '" . eval("\$this->$attribute;") . "'";
$sql .= " WHERE ...";
我似乎无法使用此eval(\$this->$attribute;)生成对象属性值。属性中有一个值,它是公共属性
谢谢
$attribute是一个函数变量,它将包含类似“address\u id”的字符串
更新表\u name SET address\u id='11'其中用户\u id='1'
这是一个简单的例子您不需要使用eval进行此操作。PHP支持变量: 这样做可以:
$this->$attributes
注意第二个$
符号。这基本上意味着$attributes的值用作属性名称。如果您想让它写得更清楚,可以使用括号:
$this->{$attributes}
如果要使用数组执行此操作,或者如果要使用多个变量生成如下变量名,则需要使用此括号:
$this->{$var1}_{$array[0]}_{$var2}
这可能已经超出了这个问题的范围,但是知道变量是什么很好。但是我不建议使用它们,因为这会使代码变得不可读和难以理解。您不需要使用eval来完成这项工作。PHP支持变量: 这样做可以:
$this->$attributes
注意第二个$
符号。这基本上意味着$attributes的值用作属性名称。如果您想让它写得更清楚,可以使用括号:
$this->{$attributes}
如果要使用数组执行此操作,或者如果要使用多个变量生成如下变量名,则需要使用此括号:
$this->{$var1}_{$array[0]}_{$var2}
这可能已经超出了这个问题的范围,但是知道变量是什么很好。但我不建议使用它们,因为这会使代码不可读且难以理解。没有必要使用
eval()
:
如果属性
是一个变量,请使用:
$this->$attribute
您确定
$this->attribute
已正确清除吗 无需使用eval()
:
如果属性
是一个变量,请使用:
$this->$attribute
您确定
$this->attribute
已正确清除吗 为什么需要eval()
it?当然$this->attribute
就足够了?为什么首先需要使用eval?为什么不简单地使用$this->attribute?并学习使用预置语句大多数情况下,只要使用eval()
,您就犯了错误eval()
几乎总是不必要的。这里当然不需要。$attribute是一个函数变量,尝试过的“$this->attribute”不起作用。但是我尝试了“$sql.=eval”(“return\$this->”“$attribute”“;”);”它成功了。为什么需要eval()
it?当然$this->attribute
就足够了?为什么首先需要使用eval?为什么不简单地使用$this->attribute?并学习使用预置语句大多数情况下,只要使用eval()
,您就犯了错误eval()
几乎总是不必要的。这里当然不需要。$attribute是一个函数变量,尝试过的“$this->attribute”不起作用。但是我尝试了“$sql.=eval”(“return\$this->”“$attribute”“;”);”它起作用了。我想应该是这样的:“$this->attribute。”如果它是一个变量,就不会。你忘记了concatation的第一个点,那么上面的应该没问题。@BasicBridge BenM没有得到concatation问题,我有,所以我又写了一遍,让他明白你的意思。我认为应该是这样的”“$this->attribute。”
如果它是一个变量,就不会。你忘记了concatation的第一个点,
,那么上面应该没问题。@BasicBridge BenM没有得到concatation问题,我得到了,所以我又写了一遍,让他明白你的意思。