我尝试编写插入语句

时间:2015-11-05 17:47:35

标签: php mysql sql database insert

所以我有$ sql变量,它应该是一个包含sql insert语句的字符串。这是一段代码:

$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))";

这是我收到的错误消息:

  

解析错误:语法错误,意外''(T_ENCAPSED_AND_WHITESPACE),   期待标识符(T_STRING)或变量(T_VARIABLE)或数字   (T_NUM_STRING)

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

2 个答案:

答案 0 :(得分:0)

在字符串中,PHP只会进行基本的自动变量扩展。问题在于索引运算符:$params['Nume_dep']

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

答案 1 :(得分:0)

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

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