为什么我的$ _POST不起作用?

时间:2015-06-10 07:16:43

标签: php mysql

我有一个带有

等输入的表单

<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这样做。

5 个答案:

答案 0 :(得分:4)

这里有两个问题:

  1. 你的报价错了,这会给你一个致命的解析错误(见其他答案)。
  2. 您的$connexion变量在您的函数范围内未定义。您还需要将其作为参数发送。
  3. 除此之外,您应该使用预准备语句来解决第一个问题并保护自己免受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