@MaksimT
backend pro

Как отправить массив с помощью serialize в mysql?

Помогите! есть массив данных $cart
$cart = array(
"data" => array(
array(
"id" => 1,
"name" => "Product #1",
"description" => "Product Description",
"price"=>"50"
),
array(
"id" => 2,
"name" => "Product #2",
"description" => "Product Description",
"price"=>"150"
),
)
);


преобразую его в строку через serialize

$ser=mysql_escape_string(serialize($cart));


пытаюсь записать в БД mysql

function post_db($data){
$insert = ' insert ';
$into = ' into ';
$table = ' "data"("product_id", "name", "description", "price") ';
$value = ' VALUES (NULL,"data",'.$data.',100) ';
$query = $insert.$into.$table.$value;
}

post_db($ser);


выдает ошибку

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"data"("product_id", "name", "description", "price") VALUES (NULL,"data","$data' at line 1
  • Вопрос задан
  • 1801 просмотр
Пригласить эксперта
Ответы на вопрос 3
@MaksimT Автор вопроса
backend pro
Спасибо за ответы, нашел решение. Проблема была в синтаксисе с этими " ' и . (конкатенация) можно запутаться окончательно.
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
А что непонятного? Английским по белому же пишет, что вместо таблицы `data` пытаетесь вставить данные в строку "data". Да и названия полей неправильно указаны.
А вообще, на мой взгляд, собирать запрос таким образом - изврат. Пользуйтесь mysqli или pdo с параметризованными запросами.
Ответ написан
Комментировать
nazarpc
@nazarpc
Open Source enthusiast
$insert = ' insert ';
$into = ' into ';

Зачем???
mysql_escape_string

Вы страницу документации смотрели? Мало того что использование mysql_* функций давно устарело и уже выпилено из последней версии PHP, так mysql_escape_string ещё до этого не рекомендовалась к использованию.
В целом - читайте документацию, нормально форматируйте код, и читайте ошибки, всё вам популярно уже описано, а переводчик в другой вкладке.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы