无法使用“插入”将文本发布到MySQL

时间:2011-11-29 18:23:05

标签: php mysql

我正在使用此查询输入前端编辑信息。 2个问题。首先,输入作为数字正常工作,但不会发布文本。其次,new_type1和new_type2是复选框,不能正确发布。

$query = "DELETE p.* FROM #__bl_press as p WHERE p.match_id = ".$row->id;
$db->setQuery($query);
$db->query();

if(isset($_POST['new_source']) && count($_POST['new_source'])){
   for ($i=0; $i< count($_POST['new_source']); $i++){
      $new_event1 = $_POST['new_source'][$i];
      $query = "INSERT INTO #__bl_press(n_source, n_title, n_link, match_id, type1, type2) VALUES(".$new_event1.",".$_POST['new_title'][$i].",".$_POST['new_link'][$i].",".$row->id.",".intval($_POST['new_type1'][$i]).",".intval($_POST['new_type2'][$i]).")";
      $db->setQuery($query);
      $db->query();
   }
}

3 个答案:

答案 0 :(得分:3)

你需要围绕字符串值的引号:

$query = "INSERT INTO #__bl_press(n_source,n_title,n_link,match_id,type1,type2)".
         "VALUES('".$new_event1."','".$_POST['new_title'][$i]."','" . // etc
//               ^               ^ ^                           ^ ^

此外,当发布的数据包含引号或反斜杠等字符时,您应该使用mysql_real_escape_string或参数化查询来避免SQL注入漏洞和运行时错误。有关更多信息,请参阅此问题:

答案 1 :(得分:0)

您没有在它们周围添加引号(')。数字只是一个数字,但字符串必须写为"string"而不是string

另外,为避免SQL注入,请始终使用mysql_real_escape_string或其他转义功能。

答案 2 :(得分:0)

你可能忘记使用单引号(')作为字符串。只是一个愚蠢的错误:

$query = "INSERT INTO #__bl_press(n_source,n_title,n_link,match_id,type1,type2) VALUES('".$new_event1."','".$_POST['new_title'][$i]."','".$_POST['new_link'][$i]."',".$row->id.",'".intval($_POST['new_type1'][$i])."','".intval($_POST['new_type2'][$i])."')";