2013-09-24 5 views
0

У меня есть строка, которая хранится в массиве и в конечном итоге вставлена ​​в базу данных SQL с использованием php и PDO. Когда я смотрю в базе данных, есть значение = 20, которое хранится в конце строки, от которой я хотел бы избавиться.Как удалить этот дополнительный символ из моей строки?

Мой код выглядит примерно так:

$name = trim($message_item[1]); 
$name = addslashes($name); 
$so_row = "INSERT into sales_order (name) VALUES('$name')"; 
$dbmrp->exec($so_row); 

Я думал, что накладка() устранил бы ничего лишнего, но это, кажется, не поможет. Я могу избавиться от него, используя preg_replace ('/ \ s + /', '', $ name), но затем я теряю все пробелы, в том числе те, что посередине, которые я хочу сохранить. Итак, что такое = 20 и как я могу избавиться от него?

Дополнительная информация- $ message_item - это массив, который создается из взрыва строки, которая считывается из письма.

+4

Ваш код уязвим для инъекций SQL! Пожалуйста, узнайте, как использовать подготовленные заявления! –

+0

Что вы хотите обрезать? Пробелы или '= 20'? – user2180613

+0

Что такое '$ message_item' и откуда оно взялось? «Большой вопрос» - откуда вообще возникает «= 20»? –

ответ

0

Обрезка только для пространств на начало и конец строки. Вы можете сделать, как сказал Донован, и удалить все 3 последних характеристик.

$name = substr($name, 0, -3); 

или заменить все = 20 пустым

str_replace('=20', '', subject) 

Но я действительно думаю, что вы должны понять, почему вы получаете строку с этим = 20. Любое решение, которое удаляет его, является всего лишь обходным решением.

2

Вы можете использовать substr() для удаления «= 20» в конце вашей строки как.

$name = substr($name, 0, -3); 

http://php.net/manual/fr/function.substr.php

+0

Я пробовал что-то подобное, но использовал -1, так как это действительно просто один невидимый элемент, который переводится на = 20 в процессе перехода в базу данных. Проблема в том, чтобы делать это так, но это то, что иногда присутствует дополнительный персонаж, а иногда и нет. – xena

+0

Проверьте кодировку в базе данных. Но я не вижу проблемы. Можете ли вы написать значение $ so_row как раз перед тем, как вставить в свою базу? –

+1

Ну, хорошо, я догадываюсь, что = 20. По-видимому, в этом конкретном случае = 20 не было имени, но оно появляется на других. Так что, возможно, один из вариантов замены preg будет работать. Спасибо за помощь. – xena

Смежные вопросы