it-swarm.com.ru

PHP: обновить несколько полей MySQL в одном запросе

Я просто пытаюсь обновить несколько значений в моей таблице. Каков будет лучший способ пойти по этому поводу? Вот текущий код:

$postsPerPage = $_POST['postsPerPage'];
$style = $_POST['style'];

mysql_connect ("localhost", "user", "pass") or die ('Error: ' . mysql_error());
mysql_select_db ("db");

mysql_query("UPDATE settings SET postsPerPage = $postsPerPage WHERE id = '1'") or die(mysql_error());

Другое обновление, которое я хочу включить:

mysql_query("UPDATE settings SET style = $style WHERE id = '1'") or die(mysql_error());

Спасибо!

15
Chris

Добавьте несколько столбцов с разделением запятыми:

UPDATE settings SET postsPerPage = $postsPerPage, style= $style WHERE id = '1'

Тем не менее, вы не дезинфицируете ваши входы ?? Это будет означать, что любой случайный хакер может уничтожить вашу базу данных. Смотрите этот вопрос: Каков наилучший метод для дезинфекции ввода пользователя с помощью PHP?

Кроме того, стиль является числом или строкой? Я предполагаю строку, поэтому она должна быть в кавычках.

46
Fosco

Запятая разделяет значения:

UPDATE settings SET postsPerPage = $postsPerPage, style = $style WHERE id = '1'"
6
Christian

Если вы используете pdo, это будет выглядеть так

$sql = "UPDATE users SET firstname = :firstname, lastname = :lastname WHERE id= :id";
$query = $this->pdo->prepare($sql);
$result = $query->execute(array(':firstname' => $firstname, ':lastname' => $lastname, ':id' => $id));
1
Linh

Я думаю, вы можете использовать:

$con = new mysqli("localhost", "my_user", "my_password", "world");
$sql = "UPDATE `some_table` SET `txid`= '$txid', `data` = '$data' WHERE `wallet` = '$wallet'";
if ($mysqli->query($sql, $con)) {
    print "wallet $wallet updated";
}else{
    printf("Errormessage: %s\n", $con->error);
}
$con->close();
0
Pedro Lobito