我可以遍历数据库结果并删除斜杠吗?
(每当我编辑文本并将其放回数据库时,我就开始获得更多斜杠)
$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 :(得分: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);
答案 1 :(得分:1)
不要那样做。 stripslashes()不足以使字符串在SQL语句中安全使用。您的代码容易受到SQL注入攻击。改为使用预准备语句和绑定参数。