无法在mysql_query函数中执行PHP代码。代码作为字符串存储在变量中

时间:2012-10-15 06:38:05

标签: php mysql

以下是用于生成要在mysql_query函数

中执行的代码的代码
for($i=1;$i<=$totalcols;$i++) {
    $val_array[] = "\'\".\$data->val(\$i,$i).\"\'";

}

然后使用implodestripslashes函数将上面的数组转换为不带斜杠的字符串。

$val = stripslashes(implode(",",$val_array));

所有这些都会产生如下字符串

'".$data->val($i,1)."','".$data->val($i,2)."','".$data->val($i,3)."'

这是我在VALUES()中使用的字符串。不是执行代码然后在数据库中插入值,而是将字符串原样插入到数据库中。如下使用mysql_query函数。

mysql_query("INSERT INTO import_excel ($val_string) VALUES($val)") or die(mysql_error());

以下是插入数据库的数据截图 enter image description here

1 个答案:

答案 0 :(得分:1)

您想要做的通常是这样做的:

$val_array[] = "'{$data->val($i)}'";

即。变量值在构建时插入到字符串中,而不是在执行时插入。

这是因为干净的PHP代码通常不使用“eval”函数,尽管有办法滥用PHP来实现它。

此外,您通常需要应用该函数来转义值中的引号,以免SQL注入:

$val_array[] = "'".mysql_real_escape_string($data->val($i))."'";