我有一个带有
等输入的表单 <input type="text" name="data4" id="data4" value="">
功能:
function($data1,$data2,$data3,$data4){
$query = "UPDATE table1
SET data1 = "'.$data1.'", data2 = "'.$data2."' , data3 = "'.$data3.'" , data4 = "'.$data4.'"
$connexion->exec($query);
}
调用我的函数:
function($data1,$_POST['data2'],$_POST['data3'],$_POST['data4'])
问题如下:我的$data4
为0而不是表单值。其他人$data
运作良好,所以我真的不明白为什么我$data4
这样做。
答案 0 :(得分:4)
这里有两个问题:
$connexion
变量在您的函数范围内未定义。您还需要将其作为参数发送。除此之外,您应该使用预准备语句来解决第一个问题并保护自己免受SQL注入。
您还应该为数据库调用添加错误处理。
答案 1 :(得分:1)
您的查询字符串不正确 - 您必须在查询后Error:(22, 91) error: inconvertible types
required: VideoListFragment
found: Fragment
之后与"'
交换'"
- 也许就是这样,查询无法正确执行?< / p>
答案 2 :(得分:1)
您需要更改功能
function($data1,$data2,$data3,$data4)
{
$query = "UPDATE table1 SET data1 = '".$data1."', data2 = '".$data2."' , data3 = '".$data3."' , data4 = '".$data4."'";
$connexion->exec($query);
}
将"'
替换为'"
,并在查询结尾处使用;
。
答案 3 :(得分:0)
SET data1 = "'.$data1.'", data2 = "'.$data2."' , data3 = "'.$data3.'" ,
data4 = "'.$data4.'"
到
SET data1 = '".$data1."', data2 = '".$data2."' , data3 = '".$data3."' ,
data4 = '".$data4."'
答案 4 :(得分:0)
除了那些人指出的类型(替换data2 =&#34;&#39;。$ data2。&#34;&#39; data2 =&#34;&#39;。$ data2。 &#39;&#34;)您还应该尝试将参数绑定到查询或清理它们,保护自己免受SQL注入。
http://php.net/manual/en/security.database.sql-injection.php