Проблема с обновлением запроса PhP

0

У меня есть многочисленные средства проверки ошибок, которые недавно введенный код успешно удовлетворяет требованиям, однако данные, похоже, не попадают в базу данных. Это не обновление, поэтому я считаю, что что-то не так с моей строкой кода обновления

"UPDATE user (user_username, user_first, user_last, user_email) VALUES ('$uname', '$first', '$last', '$email');";

В основном хочу, чтобы новая информация, напечатанная в моих полях ввода, была вставлена в базу данных.

  • 0
    «данные, похоже, не попадают в базу данных». Вы уверены, что нужно обновить, а не вставлять?
  • 0
    это скорее синтаксис INSERT. ОБНОВЛЕНИЕ более похоже на: ОБНОВЛЕНИЕ пользователей SET user_username = '$ name', user_first = '$ first', ....., WHERE user_id = '$ user_id' ... но это только для примера. Вы должны использовать подготовленные операторы через mysqli или pdo, так как ваш код устарел и очень рискован для атак с использованием SQL-инъекций.
Показать ещё 3 комментария
Теги:
phpmyadmin
insert-update

3 ответа

0

Для вставки данных ваш запрос будет

INSERT INTO user (user_username, user_first, user_last, user_email) 
VALUES ('$uname', '$first', '$last', '$email')

Но если вы хотите ОБНОВИТЬ свои данные, вам нужно правильно использовать предложение UPDATE.

0

Вы не используете синтаксис MySQL для вставки новой строки:

INSERT INTO tblName (col1, col2, col3) VALUES (x, y, z);

Вместо этого у вас есть ключевое слово UPDATE.

0

Основываясь на ответе @Tim, вам, вероятно, следует также использовать подготовленное утверждение.

http://php.net/manual/en/pdo.prepared-statements.php

<?php
$stmt = $dbh->prepare("INSERT INTO user (user_username, user_first, user_last, user_email) VALUES (:usr, :first, :last, :email)");
$stmt->bindParam(':usr', $uname);
$stmt->bindParam(':first', $first);
$stmt->bindParam(':last', $last);
$stmt->bindParam(':email', $email);

$stmt->execute();

?>
  • 1
    Именованные местозаполнители PDO bindParam тем, что вы можете пропустить часть bindParam и просто выполнить $stmt->execute(array('usr' => $uname, ...)) в одной строке.
  • 1
    @tadman хорошая мысль, но круто показывать это действительно многословно новичкам.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню