2015-11-05 140 views
0

所以我具有应该是包含SQL INSERT statement.Here的一段代码字符串中的$ SQL变量的插入语句:PHP语法错误,当我尝试写

$fields = array('Nume_dep' => $params['Nume_dep'], 
       'Id_manager' => $params['Id_manager']); 
$id = $params['Id_manager']; 
$sql = "insert into departament(Nume_dep,Id_manager) values('$params['Nume_dep']', CONVERT($id, UNSIGNED))"; 

这是我得到的错误消息:

Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING)

语法错误在insert语句中,但我不知道如何解决它。

+0

您应该重写它,使其没有任何语法错误。尝试使用准备好的语句,这样的代码是不安全的。 http://markonphp.com/mysqli-select-prepared-statements/ –

+0

你在你的SQL中使用的单引号都围绕第一个值,并作为你的'$ params'数组的关键字。 PHP由此变得困惑。正如米克尔所说 - 使用准备好的声明来代替。 – andrewsi

回答

0
$id = $params['Id_manager']; 
$nume_dep=$params['Nume_dep']; 

$sql = "INSERT INTO departament(Nume_dep,Id_manager) values('$nume_dep', CONVERT($id, UNSIGNED))"; 
0

在字符串中PHP只会做比较基本的自动变量扩展。问题是与索引运算符在这里:$params['Nume_dep']

考虑使用预准备语句,以防止SQL注入。如果攻击者可以确定,你的函数被调用的类似"', 43); drop table department; --"作为$params['Nume_dep']的值,那么你会遇到很大的麻烦。