0

我可以遍历数据库结果并删除斜杠吗?

(每次我编辑文本并将其放回数据库时,我开始得到更多的斜线)

$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 插入数据库:

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

$result = $db->query($query2);
4

2 回答 2

2

您不能在数组上运行 stripslashes(),这就是 $info 来自存储 mysql_fetch_array($results) 的原因。您可以遍历 $info 并在每个条目上去除斜杠,或者如果您不需要全部执行斜杠,则可以显式去除斜杠。

$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);
于 2011-04-23T04:15:53.027 回答
1

不要那样做。stripslashes() 不足以使字符串在 SQL 语句中安全使用。您的代码容易受到 SQL 注入的攻击。请改用准备好的语句和绑定参数。

于 2011-04-23T04:34:50.627 回答