Php 通过while循环从数据库返回stip斜杠

Php 通过while循环从数据库返回stip斜杠,php,stripslashes,Php,Stripslashes,我可以循环查看数据库结果并删除斜杠吗 (每次编辑文本并将其放回数据库时,我都会得到更多的斜杠) 但我得到了以下错误: 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 {

我可以循环查看数据库结果并删除斜杠吗

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

但我得到了以下错误:

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);
不能在数组上运行stripslashes(),这就是存储mysql\u fetch\u数组($results)的$info。您可以遍历$info并在每个条目上删除斜杠,如果不需要全部删除斜杠,也可以显式删除斜杠

$i=0;
while($infoarray = mysql_fetch_assoc($results))
    {
        foreach($infoarray as $field=>$value){
            $data[$i][$field] = stripslashes($value);
        }
        $i++;
    }
编辑:您还可以创建一个小函数来去除数组中的斜杠,如以下文档所述:

不能在数组上运行stripslashes(),这就是存储mysql\u fetch\u数组($results)的$info。您可以遍历$info并在每个条目上删除斜杠,如果不需要全部删除斜杠,也可以显式删除斜杠

$i=0;
while($infoarray = mysql_fetch_assoc($results))
    {
        foreach($infoarray as $field=>$value){
            $data[$i][$field] = stripslashes($value);
        }
        $i++;
    }
编辑:您还可以创建一个小函数来去除数组中的斜杠,如以下文档所述:


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

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

我们需要查看您的insert查询。它有一个问题,请参见上面的“我的编辑”以更新数据库。我们需要查看您的插入查询。它有一个问题,请参见上面的“我的编辑”以更新数据库。谢谢您的建议。这个表单是在一个管理区域,所以我没有考虑过太多关于安全性的问题。我刚从引号和撇号中得到奇怪的结果。谢谢你的推荐。这个表单是在一个管理区域,所以我没有考虑过太多关于安全性的问题。我刚刚从引号和撇号中得到了奇怪的结果。当我使用上面的代码,然后尝试回显如下值:我得到数字1,并测试我回显$field,但得到7个更多文本。如果我没有掌握这些,我很抱歉,但我感谢您的帮助。我做了一些更改。我忘了在每行以$data存储东西的位置递增。我还将其更改为mysql\u fetch\u assoc,以便获得正确的键=>值对。我建议在where循环的开头添加print\r($infoarray)和print\r($data)当我使用上面的代码,然后尝试像这样回显值时:我得到数字1,要测试我回显$字段,但得到7个更多的文本。如果我没有掌握这一点,我很抱歉,但我感谢你的帮助。我做了一些改变。我忘了在每行以$data存储东西的位置递增。我还将其更改为mysql\u fetch\u assoc,以便获得正确的键=>值对。我建议在where循环的开头添加一个print_r($INFORARRAY),并在循环结束后添加一个print_r($data),以查看事物的结构并更好地进行故障排除。再次感谢您的帮助,我将记住该print_r进行测试。
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);