2013-03-19 88 views
5

我想要做的是通过文本输入循环,其中用户输入博客帖子的标签。如果它不存在,我想将每个标记添加到数据库。

当我在数据库中测试时,下面的实际查询字符串有效。

但是我认为我的循环语法可能不太正确因为我没有得到任何添加到数据库。

任何人都可以在我的循环中发现一个错误,导致我的'添加到数据库'失败?

在此先感谢您的帮助!

foreach ($_POST['__tags'] as $key=>$ls_value) { 

     $value = strtolower(mysql_real_escape_string($ls_value)); 

     mysql_query("INSERT INTO `table` (`field`) 
       SELECT * FROM (SELECT '$value') as tmp 
       WHERE NOT EXISTS (
         SELECT `field` FROM `table` WHERE `field` = '$value') 
       LIMIT 1") or trigger_error(mysql_error(), E_USER_ERROR);    

    } 
+4

在$ _POST ['__ tags']上回显或使用print_r返回什么?它是否返回任何东西? – 2013-03-19 04:33:56

+1

您的代码易受sql注入攻击。此外,mysql_ *函数已弃用,应尽可能不再使用。 http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php – Cfreak 2013-03-19 04:38:26

回答

1

尝试使用下面的代码:使用适当的PDO或制备的声明,请求mysql_query

if(is_array($_POST['__tags'])) 
{ 
    foreach ($_POST['__tags'] as $key=>$ls_value) { 

     $value = strtolower(mysql_real_escape_string($ls_value)); 

     mysql_query("INSERT INTO table (field) 
      SELECT * FROM (SELECT '".$value."') as tmp 
      WHERE NOT EXISTS (SELECT field FROM table WHERE field = '".$value."') LIMIT 1") or trigger_error(mysql_error(), E_USER_ERROR);    

    } 
} 

请已被弃用,改用MySQLi函数

+0

传奇!现在所有的工作都很完美。非常感谢! – 2013-03-19 20:24:49

+0

@贝克卡特:不客气 – 2013-03-20 03:54:52

0

只是尝试用下面的:

PHP部分:

<?php 

$tags = $_POST['tags']; 

foreach ($tags as $tag){ 
$value = strtolower(mysql_real_escape_string($tag)); 
$sel_tag = mysql_query("select * from `table` where `field`='$value'")or die(mysql_error()); 
$num_rows = mysql_num_rows($sel_tag); 
if($num_rows > 0){ 
echo "Tag Already Exists"; 
} 
else { 
$ins_tag = mysql_query("insert into `table` (`field`) values ('$value');")or die(mysql_error()); 
echo "Tag Successfully Inserted"; 
} 
} 

?> 

HTML部分:

<form action="" name="tags" method="post"> 
<p>Please select the tags names : </p> 
<p> 
<input type="checkbox" name="tags[]" value="tag1"> Tag1 
<input type="checkbox" name="tags[]" value="tag2"> Tag2 
<input type="checkbox" name="tags[]" value="tag3"> Tag3 
</p> 
<p><input type="submit" name="tag_submit" value="Submit"></p> 
</form> 

我认为这可以帮助你解决你的问题。

0

我已经给你提示取数组值和按键组成的名字应该等于数据库归档检查这个

post.php中

<?php 
     $keys=array(); 
     $values=array();  
     foreach ($_POST as $key=>$ls_value) { 
      $keys[]=$key; 
      $values[]="'".mysql_real_escape_string($ls_value)."'";  
     } 
     echo $fileds=implode(",", $keys); 
     echo $values=implode(",", $values); 
    ?> 

form.html

<form action="post.php" method="post"> 
    <input type="text" value="123" name="number"/> 
    <input type="text" value="firstname" name="name"/> 
    <input type="submit" value="submit"/> 
</form> 
相关问题