METANIT.COM

PHP SQL Update Query syntax

I’m working on my first PHP/MySQL project, and I’ve gotten basic logins and INSERT queries working, but not updates. This is my first update, which is just one row with a state and zipcode. Is anything wrong?

$dbc = mysql_connect("$host", "$username", "$password")or die("cannot connect"); mysql_select_db("$db_name")or die("cannot select DB"); $state=$_POST['state']; $zip=$_POST['zip']; $custnum = 0; $sql="UPDATE $tbl_name SET state = '$state', zip = '$zip', WHERE custnum = '$custnum'"; $result = mysqli_query($dbc, $sql) or die('Error querying database.'); 

Also, the code you show is vulnerable to SQL injection. Use the proper sanitation method of your library (= in this case, mysql_real_escape_string() ), or switch to PDO and prepared statements.

6 Answers 6

$sql="UPDATE SET state='', zip='' WHERE custnum=''"; 

Remove the last comma before «WHERE» clause. Also, if you’re just starting out it’s good to put parenthesis around variables names when using double-quotes for strings. Helps you to distinguish the variables better.

Pekka is also correct in his comments, you are mixing mysql and mysqli functions. Use mysql_query() instead.

I think you need to get rid of the comma just before the WHERE.

$suitno =mysqli_real_escape_string($ecms,$_POST['suitno']);//protecting sql injection $defendant=mysqli_real_escape_string($ecms,$_POST['defendant']);//protecting sql injection $casenature=mysqli_real_escape_string($ecms,$_POST['casenature']);//protecting sql injection $sql="UPDATE causelist SET suitno='', casenature='' WHERE suitno=''"; $result = mysqli_query($ecms, $sql) or die('Error querying database.'); 
 $dbc = mysql_connect($host, $username, $password)or die("cannot connect"); //don't need quotes mysql_select_db($db_name,$dbc)or die("cannot select DB"); //added the $dbc (connection link) as a second parameter $state=mysql_real_escape_string($_POST['state']); //Should make it safe! $zip=mysql_real_escape_string($_POST['zip']); //Should make it safe! $custnum = 0; $sql="UPDATE $tbl_name SET state = '$state', zip = '$zip' WHERE custnum = '$custnum'"; //removed an extra comma //Notice that $tbl_name isn't defined! u $result = mysql_query($sql) or die('Error querying database.'); //from mysqli to mysql 

Looks like a sql syntax error:Remove the comma before WHERE

 $upd="update table_name SET name='$name',surname='$surname' where >>

This question is in a collective: a subcommunity defined by tags with relevant content and experts.

Читайте также:  Mac os html css

Источник

Update query in sql with php

В MySQL для обновления применяется sql-команда UPDATE :

UPDATE Таблица SET столбец1 = значение1, столбец2 = значение2. WHERE столбец = значение

Для примера возьмем использованную в прошлых темах таблицу Users со следующим определением:

CREATE TABLE Users (id INTEGER AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30), age INTEGER)

Объектно-ориентированный стиль

Сначала определим файл index.php , который будет выводить список пользователей с ссылками на их обновление:

     

Список пользователей

connect_error)< die("Ошибка: " . $conn->connect_error); > $sql = "SELECT * FROM Users"; if($result = $conn->query($sql))< echo ""; foreach($result as $row)< echo ""; echo ""; echo ""; echo ""; echo ""; > echo "
ИмяВозраст
" . $row["name"] . "" . $row["age"] . "Изменить
"; $result->free(); > else< echo "Ошибка: " . $conn->error; > $conn->close(); ?>

Здесь используется команда SELECT, которая получает всех пользователей из таблицы Users. В таблице третий столбец хранит ссылку на скрипт update.php, который мы далее создадим и которому передается параметр id с идентификатором пользователя, которого надо изменить.

Для обновления данных определим скрипт update.php :

connect_error)< die("Ошибка: " . $conn->connect_error); > ?>     real_escape_string($_GET["id"]); $sql = "SELECT * FROM Users WHERE "; if($result = $conn->query($sql))< if($result->num_rows > 0) < foreach($result as $row)< $username = $row["name"]; $userage = $row["age"]; >echo "

Обновление пользователя

Имя:

Возраст:

"; > else< echo "
Пользователь не найден
"; > $result->free(); > else< echo "Ошибка: " . $conn->error; > > elseif (isset($_POST["id"]) && isset($_POST["name"]) && isset($_POST["age"])) < $userid = $conn->real_escape_string($_POST["id"]); $username = $conn->real_escape_string($_POST["name"]); $userage = $conn->real_escape_string($_POST["age"]); $sql = "UPDATE Users SET name = '$username', age = '$userage' WHERE "; if($result = $conn->query($sql)) < header("Location: index.php"); >else< echo "Ошибка: " . $conn->error; > > else < echo "Некорректные данные"; >$conn->close(); ?>

Весь код обновления структурно делится на две части. В первой части мы обрабатываем запрос GET. Когда пользователь нажимает на ссылку «Обновить» на странице index.php , то отправляется запрос GET, в котором передается id редактируемого пользователя.

if($_SERVER["REQUEST_METHOD"] === "GET" && isset($_GET["id"]))

И если это запрос GET, то нам надо вывести данные редактируемого пользователя в поля формы. Для этого получаем из базы данных объект по переданному id

$userid = $conn->real_escape_string($_GET["id"]); $sql = "SELECT * FROM Users WHERE "; if($result = $conn->query($sql))

Далее получаем полученные данные и, если они имеются, выводим их в поля формы. Таким образом, пользователь увидит на форме данные обновляемого объекта.

Вторая часть скрипта представляет обработку POST-запроса - когда пользователь нажимает на кнопку на форме, то будет отправляться POST-запрос с отправленными данными. Мы получаем эти данные и отправляем базе данных команду UPDATE с этими данными, используя при этом параметризацию запроса:

$userid = $conn->real_escape_string($_POST["id"]); $username = $conn->real_escape_string($_POST["name"]); $userage = $conn->real_escape_string($_POST["age"]); $sql = "UPDATE Users SET name = '$username', age = '$userage' WHERE "; if($result = $conn->query($sql))

После выполнения запроса к БД перенаправляем пользователя на скрипт index.php с помощью функции

Таким образом, пользователь обращается к скрипту index.php , видит таблицу с данными и нажимает на ссылку "Обновить" в одной из строк.

Вывод данных из MySQL в PHP и pdo

После нажатия его перебрасывает на скрипт update.php , который выводит данные редактируемого объекта. Пользователь изменяет данные и нажимает на кнопку.

Редактирование данных из MySQL в PHP и pdo

Данные в запросе POST отправляются этому же скрипту update.php , который сохраняет данные и перенаправляет пользователя обратно на index.php .

Изменение данных из MySQL в PHP и pdo

Процедурный стиль

     

Список пользователей

$sql = "SELECT * FROM Users"; if($result = mysqli_query($conn, $sql))< echo ""; foreach($result as $row)< echo ""; echo ""; echo ""; echo ""; echo ""; > echo "
ИмяВозраст
" . $row["name"] . "" . $row["age"] . "Изменить
"; mysqli_free_result($result); > else < echo "Ошибка: " . mysqli_error($conn); >mysqli_close($conn); ?>
 ?>      0) < foreach($result as $row)< $username = $row["name"]; $userage = $row["age"]; >echo "

Обновление пользователя

Имя:

Возраст:

"; > else< echo "
Пользователь не найден
"; > mysqli_free_result($result); > else < echo "Ошибка: " . mysqli_error($conn); >> elseif (isset($_POST["id"]) && isset($_POST["name"]) && isset($_POST["age"])) < $userid = mysqli_real_escape_string($conn, $_POST["id"]); $username = mysqli_real_escape_string($conn, $_POST["name"]); $userage = mysqli_real_escape_string($conn, $_POST["age"]); $sql = "UPDATE Users SET name = '$username', age = '$userage' WHERE "; if($result = mysqli_query($conn, $sql))< header("Location: index.php"); >else < echo "Ошибка: " . mysqli_error($conn); >> else < echo "Некорректные данные"; >mysqli_close($conn); ?>

Источник

PHP MySQL Update Data

The UPDATE statement is used to update existing records in a table:

Notice the WHERE clause in the UPDATE syntax: The WHERE clause specifies which record or records that should be updated. If you omit the WHERE clause, all records will be updated!

To learn more about SQL, please visit our SQL tutorial.

Let's look at the "MyGuests" table:

id firstname lastname email reg_date
1 John Doe john@example.com 2014-10-22 14:26:15
2 Mary Moe mary@example.com 2014-10-23 10:22:30

The following examples update the record with in the "MyGuests" table:

Example (MySQLi Object-oriented)

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) die("Connection failed: " . $conn->connect_error);
>

$sql = "UPDATE MyGuests SET lastname='Doe' WHERE ($conn->query($sql) === TRUE) echo "Record updated successfully";
> else echo "Error updating record: " . $conn->error;
>

Example (MySQLi Procedural)

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) die("Connection failed: " . mysqli_connect_error());
>

$sql = "UPDATE MyGuests SET lastname='Doe' WHERE (mysqli_query($conn, $sql)) echo "Record updated successfully";
> else echo "Error updating record: " . mysqli_error($conn);
>

Example (PDO)

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";

try $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sql = "UPDATE MyGuests SET lastname='Doe' WHERE // Prepare statement
$stmt = $conn->prepare($sql);

// execute the query
$stmt->execute();

// echo a message to say the UPDATE succeeded
echo $stmt->rowCount() . " records UPDATED successfully";
> catch(PDOException $e) echo $sql . "
" . $e->getMessage();
>

After the record is updated, the table will look like this:

id firstname lastname email reg_date
1 John Doe john@example.com 2014-10-22 14:26:15
2 Mary Doe mary@example.com 2014-10-23 10:22:30

Источник

How to update multiple columns in mysql using php

i have 5 column values to be updated in table, i am using variable to save data and using that variable want to update the values in table how can i do that?

@Mithun Please check your query. I think, you are confused with INSERT and UPDATE query. Refer the UPDATE query syntax here

5 Answers 5

 $sql = "UPDATE `product_list` SET `product_name` = '$product_name', `product_category` = '$product_category', `product_price` = '$product_price', `product_description` = '$product_description', `product_size_category` = '$size_category' where clause. (if required) "; 
$sql = "UPDATE product_list SET product_name='".$product_name."',product_category='".$product_category."',product_price='".$product_price."',product_description='".$product_description."',size_category='".$size_category."' WHERE product_id https://dev.mysql.com/doc/refman/5.0/en/update.html" rel="nofollow">https://dev.mysql.com/doc/refman/5.0/en/update.html

)" data-controller="se-share-sheet" data-se-share-sheet-title="Share a link to this answer" data-se-share-sheet-subtitle="" data-se-share-sheet-post-type="answer" data-se-share-sheet-social="facebook twitter devto" data-se-share-sheet-location="2" data-se-share-sheet-license-url="https%3a%2f%2fcreativecommons.org%2flicenses%2fby-sa%2f3.0%2f" data-se-share-sheet-license-name="CC BY-SA 3.0" data-s-popover-placement="bottom-start">Share
)" title="">Improve this answer
)">edited Sep 7, 2015 at 12:13
answered Sep 7, 2015 at 12:06
Add a comment |
4

Update SQL query, see following method:

Update database_tablename SET column_name1 = column_value1 , column_name2 = column_value2

$sql = "UPDATE product_list SET product_name='".$product_name."',product_category='".$product_category."',product_price='".$product_price."',product_description='".$product_description."',size_category='".$size_category."'"; 

Please consider editing your post to add more explanation about what your code does and why it will solve the problem. An answer that mostly just contains code (even if it's working) usually won't help the OP to understand their problem.

Источник

Оцените статью