2013-03-15 47 views
0

下面是一個顯示在MySQL查詢一些錯誤我的代碼:如何比較輸入數組與MySQL列?

<?php 
$con=mysql_connect('localhost','root',''); 
$str=$_GET["message"]; 
$stor=explode(" ",$str);// converting message into array 
mysql_select_db('words',$con); 
for($j=0;$j<=30; $j++) 
{ 
mysql_query($con,"UPDATE blacklist SET $stor=1 where $stor=0");//if column name=element in array then make it as 1 in database 
} 
mysql_close($con); 
?> 
+3

什麼是錯誤? – jcho360 2013-03-15 15:44:36

+2

mysql_query的常用用法是'mysql_query(「Query」,$ Con);' – 2013-03-15 15:45:09

+1

不使用mysql_ *([已棄用](http://php.net/manual/en/function.mysql-query)。 PHP)),使用[PDO](http://www.php.net/manual/en/ref.pdo-mysql.php)而不是 – DonCallisto 2013-03-15 15:45:11

回答

0

,因爲您的查詢最終看起來像這樣

UPDATE blacklist SET Array=1 where Array=0; 

如果你只是呼應了你可能會得到一個MySQL錯誤一個完整的數組,你得到Array而不是,你需要指定一個數組元素(例如$stor[1])。

你想要做的是用foreach替換你的for循環,這樣你就可以一次只拋出一個元素。

此外,你的論點是倒退。

foreach($stor as $word) 
{ 
    mysql_query("UPDATE blacklist SET $word=1 where $word=0", $con); 
} 
+0

您可以在發表評論之前修復了mysql_query參數;) – 2013-03-15 15:50:42

+0

^^^它顯示以下警告:mysql_query( )期望參數1是字符串,在第12行的C:\ wamp \ www \ finalsem \ log.php中給出的資源。 – 2013-03-15 15:54:18

+0

打開參數,首先放置查詢,然後放置「$ con」。 '$ con'是資源,需要秒。 – castis 2013-03-15 15:55:46

1
  1. 您的代碼很容易受到SQL注入。閱讀準備好的聲明並使用PDO/MySQLi
  2. $ stor是一個數組對象,不能直接在查詢中使用。如果你想使用它,請嘗試使用

IN

上面的代碼執行以下操作( '破滅( 「」,$ STOR)。'):

implode() - 獲取一個數組並將其變成逗號分隔的字符串。

IN() - 比較給定的逗號分隔值,如果至少存在其中一個,則返回true。

實施例(內爆):

破滅( 「」,陣列(1,2,3))等於 「1,2,3」

實施例(IN):

TestID IN(1,2,3)相同AS(TestID = 1 OR TestID = 2 OR TestID = 3)

+0

也許可以解釋你的代碼片段在做什麼,通過發佈這個問題的用戶來判斷,他可能不知道它在做什麼的全部程度 – 2013-03-15 15:50:05

+0

是的,你應該使用PDO預處理語句 – Acuao 2013-03-15 15:50:54