2011-04-23 68 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