2011-04-23 32 views
0

我可以循環訪問數據庫結果並刪除斜槓嗎?從while循環返回的數據庫規定的斜槓

(我開始變得更斜線每次我編輯的文字,把它放回DB)

$db = new connection(); 

$query = "SELECT * FROM ITEMS, ALPACA_SALES WHERE ITEMS.uid = '$id' AND ALPACA_SALES.uid = ITEMS.uid"; 
$results = $db->query($query); 

$data = array();  
while($info = mysql_fetch_array($results)) 
{ 
    $data[] = stripslashes($info); 
} 

但我收到以下錯誤:

Notice: Array to string conversion in /home/content/myfile.php on line 78 

當我添加數據到數據庫我做以下幾點:

if (!empty($_POST['more_text'])) 
{ 
    $more_text = addslashes($_POST['more_text']); 
} 
else 
{ 
    $error = false; 
    $error_message = "Please add a description."; 
} 

然後我使用UPDATE插入到DB:

$query2 = "UPDATE ALPACA_SALES SET more_text = '$more_text' WHERE uid = '$id'"; 

$result = $db->query($query2); 
+0

我們需要看到您的插入查詢。有一個問題 – 2011-04-23 04:13:00

+0

請參閱我的編輯上面的更新DB – Denoteone 2011-04-23 04:25:25

回答

2

您不能在數組上運行stripslashes(),這是$ info從存儲mysql_fetch_array($ results)中獲取的信息。您可以遍歷每個條目的$ info和strip斜槓,或者如果您不需要全部刪除斜槓,則可以明確地刪除斜槓。

$i=0; 
while($infoarray = mysql_fetch_assoc($results)) 
    { 
     foreach($infoarray as $field=>$value){ 
      $data[$i][$field] = stripslashes($value); 
     } 
     $i++; 
    } 

編輯:您還可以創建一個小功能在陣列中剝離斜線,這裏文檔中列出:http://us.php.net/manual/en/function.stripslashes.php

function stripslashes_deep($value) 
{ 
    $value = is_array($value) ? 
       array_map('stripslashes_deep', $value) : 
       stripslashes($value); 

    return $value; 
} 

// Example 
$array = array("f\\'oo", "b\\'ar", array("fo\\'o", "b\\'ar")); 
$array = stripslashes_deep($array); 
+0

當我使用上面的代碼,然後嘗試回顯值如下:<? echo $ data [0] ['more_text']; ?>我得到數字1,並測試我echo $字段,但得到7more_text對不起,如果我不抓住這一點,但我感謝您的幫助。 – Denoteone 2011-04-23 04:55:50

+0

我做了一些改變。我忘記了在每行存儲$ data數據的地方。我也將其更改爲mysql_fetch_assoc,以便我們獲得正確的鍵=>值對。我會建議在where循環的開始處添加一個print_r($ infoarray),並在完成後添加一個print_r($ data),以查看事件的結構和更好的故障排除。 – 2011-04-23 05:07:07

+0

再次感謝您的幫助,我會記住print_r進行測試。 – Denoteone 2011-04-23 05:12:16

1

不要那樣做。 stripslashes()不足以使字符串在SQL語句中安全使用。您的代碼易受SQL注入攻擊。改用預先準備的語句和綁定參數。

+0

感謝您的建議。這種形式是在管理區域,所以我沒有太多關於安全性。我只是從引號和撇號中得到奇怪的結果。 – Denoteone 2011-04-23 04:44:46