Мой код должен проверять базу данных, чтобы узнать, существует ли custID, и если да, то для обновления информации. Это не так, нужно добавить информацию о клиенте в базу данных.Почему mysql вставляет новую строку вместо ее обновления?
В настоящее время, когда я использую код, который у меня есть, каждый раз, когда на сайте создается заказ, в базу данных добавляется новый custID.
Эти ошибки происходят:
- Когда новый клиент заказывает, новая строка вставляется. Ни одна из информации из полей не помещается в базу данных, а только пустую строку.
- Когда возвращающиеся заказы клиентов, их информация берется из базы данных на предыдущей странице, но на этой странице она вставляет новую строку, а новые поля остаются пустыми.
Если этого недостаточно, или ясен, я с радостью предложим больше кода и объяснений.
//The information is passed through a session object from a previous page.
if (ISSET($_SESSION['fname'])) {
session_start();
$email = $_SESSION['email'];
$fname = $_SESSION['fname'];
$lname = $_SESSION['lname'];
$street = $_SESSION['street'];
$city = $_SESSION['city'];
$state = $_SESSION['state'];
$zip = $_SESSION['zip'];
$safeID = $_SESSION['safeID'];
$custID = $safeID/507921;
}
include_once("Connection.php");
include_once("header.html");
//check if customer is already in database
$sql = "SELECT *
FROM bookcustomers
where custID = '$custID'";
$result = mysqli_query($link, $sql)
or die('SQL syntax error: ' . mysqli_error($link));
if (mysqli_num_rows($result) > 0) {
$sql = "UPDATE bookcustomers
set fname = '$fname',
lname = '$lname',
email = '$email',
street = '$street',
city = '$city',
state = '$state',
zip = '$zip'
WHERE custID = '$custID'";
$result = mysqli_query($link, $sql)
or die('SQL syntax error: ' . mysqli_error($link));
}
else {
$sql = "INSERT into bookcustomers (fname,
lname,
email,
street,
city,
state,
zip)
VALUES ('$fname',
'$lname',
'$email',
'$street',
'$city',
'$state',
'$zip')";
$result = mysqli_query($link, $sql)
or die('SQL syntax error: ' . mysqli_error($link));
$custID = mysqli_insert_id($link);
}
затем эхо mysqli_num_rows ($ result) и проверьте, что он возвращает – gvgvgvijayan
Это делает это *. Отредактировано для удобства. – McGinger
Это не так, если запрос SELECT не возвращает строк. Похоже, вы предполагаете, что код идет по определенному пути. Проверьте свои предположения. – duffymo