@appendicit
Бездельник

Как выполнить Insert с массивом php?

Здравствуйте. Имеется очень древний php сайт, ведутся мелкие доработки, появилась ошибка не пойму в чем дело.

Для примера - вот такой PHP код:
$_POST['act'] = 'registration';
$_POST['name'] = 'Слава';
$_POST['email'] = 'slava@rambler.ru';
$_POST['pass'] = '12345';
$_POST['phone'] = '+7 (222) 333-33-33';

include '../config/config.php';

$mysql = mysql_connect($host, $user, $pass);
mysql_select_db($mysql_db);
mysql_query("SET NAMES utf8");

$name = mysql_real_escape_string($_POST['name']);
$email = mysql_real_escape_string($_POST['email']);
$pass = mysql_real_escape_string($_POST['pass']);
$phone = mysql_real_escape_string($_POST['phone']);
$key = md5($email.time());

$adduser = array('name'=>$name, 'email'=>$email, 'pass'=>md5($pass), 'phone'=>$phone, 'key'=>md5($email.time()), 'date'=>date('Y-m-d H:i:s'));
mysql_query("INSERT INTO users_tmp SET '".$adduser."'") or die(mysql_error());

Прошу по коду не критиковать, это чисто для примера.

Результат выполнения данного кода:
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''Array'' at line 1


print_r($adduser)
Array ( [name] => Слава [email] => slava@rambler.ru [pass] => 166ccb0dds2a706c4c34h43191f84e7b [phone] => +7 (222) 333-33-33 [key] => c7c9c02e80b83fc6865aa84aa3406f1b [date] => 2018-11-06 02:12:10 )


Структура БД:
5be0de07dfdad976158625.jpeg

Что тут не так, подскажите пожалуйста
  • Вопрос задан
  • 515 просмотров
Решения вопроса 1
@klubben
Тут нужна строка вместо массива, вот так:
$adduser = "`name` = '".$name."', `email` = '".$email."', `pass` = '".md5($pass)."', `phone` = '".$phone."', `key` = '".md5($email.time())."', `date` = '".date('Y-m-d H:i:s')."'";
	
mysql_query("INSERT INTO users_tmp SET ".$adduser) or die(mysql_error());


И вот здесь наверняка будет ошибка, но я не понял что вы хотели сделать
$email.time()
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@warmbellycat
Ну и по теме, в принципе уже ответили, формируйте строку и будет вам счастье. Либо как вариант используйте какой-либо ORM, на крайний случай PDO. Там и prepare есть "из коробки", скормили запрос с плейсхолдерами и массив соответствий плейсхолдер = значение и всё.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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