2013-03-19 93 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> 
相關問題