условные косые черты из базы данных возвращаются с циклом while - PullRequest
0 голосов
/ 23 апреля 2011

Можно ли просмотреть результаты БД и удалить косые черты?

(я начал получать больше слешей каждый раз, когда редактировал текст и помещал его обратно в БД)

$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);

Ответы [ 2 ]

2 голосов
/ 23 апреля 2011

Вы не можете запустить 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 голос
/ 23 апреля 2011

Не делай этого. stripslashes () недостаточно, чтобы сделать строку безопасной для использования в операторе SQL. Ваш код уязвим для внедрения SQL. Вместо этого используйте подготовленные операторы и связанные параметры.

...