У меня есть некоторые проблемы с/ обновлением моей базы данных: функция обновления не работаетPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 У меня есть некоторые проблемы с/ обновлением моей базы данных: функция обновления не работает

Сообщение Anonymous »

Я пытаюсь иметь инвентаризацию деталей некоторых пользователей, управляемых в базе данных, управляемой MariaDB. Идея на этом этапе состоит в том, что: < /p>

[*] Если часть не имеет серийного номера, проверьте, находится ли список с идентификатором этой части в таблице. /> Наконец, если часть имеет серийный номер, просто добавьте его. Во -первых, проверка ошибок: < /p>

Код: Выделить всё

if (empty($_POST["serialNumber"]))          //If the serial number field is empty...
{
$YN = is_sn_required($pdo_User, $pID);
if ($YN === "required")                  //And if a serial # is required...
{
$errors["sn_is_req"] = "Please enter a serial number.";  //Throw this error
}
}
else                                             //If the serial number field is NOT empty...
{
if (existing_serial_number($pdo_User, $pSer, $uName, $pID))    //If it already exists...
{
$errors["existing_sn"] = "That serial number already exists."; //Throw this error
}
}
< /code>
Тогда какой -то код добавляет $ errors < /code> в сеанс и перезагрузка страницы формы.
Далее, если ошибки нет, добавление данных в таблицу: < /p>
if (empty($_POST["serialNumber"]))    //If there isn't a serial #
{
if (does_pID_exist($pdo_User, $pID, $uName))   //If a part ID already exists
{
update_tech_part($pdo_User, $pID, $uName);  //update the quantity by 1
}
else
{
add_tech_part($pdo_User, $pSer, $pID, $uName); //otherwise, add it to techpartslist table
}
}
else
{
add_tech_part($pdo_User, $pSer, $pID, $uName);  //Add the part to techpartslist if it does have a SN
}
< /code>
Некоторые функции для обработки ошибок: < /p>
function existing_serial_number(object $pdo_User, string $pSer, string $pID)
{
//Check if the supplied serial # already exists for this part

$query = "SELECT serialNumber FROM techpartslist WHERE serialNumber = :serNum AND partID = :pID;";
$stmt = $pdo_User->prepare($query);
$stmt->bindParam(":serNum", $pSer);
$stmt->bindParam(":userName", $uName);
$stmt->bindParam(":pID", $pID);
$stmt->execute();

$result = $stmt->fetch(PDO::FETCH_ASSOC);
return $result;
}

function is_sn_required(object $pdo_User, string $pID)
{
//Check if the supplied serial number is required for this part

$query = "SELECT snReq FROM masterpartslist WHERE id = :pID;";
$stmt = $pdo_User->prepare($query);
$stmt->bindParam(":pID", $pID);
$stmt->execute();

$result = $stmt->fetch(PDO::FETCH_ASSOC);
$YN = $result["snReq"];
return $YN;
}
< /code>
и функции для добавления в таблицу: < /p>
function does_pID_exist(object $pdo_User, string $pID, string $uName)
{
//Check if the supplied part ID already matches

$query = "SELECT partID FROM techpartslist WHERE partID = :pID AND userName = :uName;";
$stmt = $pdo_User->prepare($query);
$stmt->bindParam(":pID", $pID);
$stmt->bindParam(":uName", $uName);
$stmt->execute;

$result = $stmt->fetch(PDO::FETCH_ASSOC);
return $result;
}

function update_tech_part(object $pdo_User, string $pID, string $uName)
{
//Get the quantity and update it by 1

$query = "UPDATE techpartslist SET quantity = quantity + 1 WHERE partID = :pID AND userName = :uName;";
$stmt = $pdo_User->prepare($query);
$stmt->bindParam(":pID", $pID);
$stmt->bindParam(":uName", $uName);
$stmt->execute();
}

function add_tech_part(object $pdo_User, string $pSer, int $pID, string $uName)
{
//Add a new row in the table

$query = "INSERT INTO techpartslist (serialNumber, quantity, partID, userName)
VALUES (:pSN, 1, :pID, :uName);";
$stmt = $pdo_User->prepare($query);
$stmt->bindParam(":uName", $uName);
$stmt->bindParam(":pSN", $pSer);
$stmt->bindParam(":pID", $pID);
$stmt->execute();
}
< /code>
и пример основной базы данных: < /p>
id     partName      partNumber      snReq
22     Scanner       561-111         no
24     Printer Cable 2001-111        no
25     XR7+          850-7003        required
27     XR8           850-8001        required
< /code>
Окончательный результат вводится в таблице с надписью «TechPartsList».
для повторного объема, каково мое желание -< /p>
сначала проверьте ошибки. Пусто, < /li>
 Проверьте таблицу "TechPartsList", чтобы увидеть, если какая -либо запись для этой части уже существует. < /li>

If the part (via partID) does exist, increase the count of the 'quantity' column by 1.
Примечание это в этой части, где возникает проблема. Обновление подсчета пропущено, а часть добавляется вместо этого, что делает точный дубликат. ** < /li>

Код: Выделить всё

If the part does NOT exist, then add the item (without the serial #) to the table.
[*] Если поле «SerialNumber» из формы не является пустым,
Добавить часть (с серийным #) к таблице.

Подробнее здесь: https://stackoverflow.com/questions/795 ... snt-runnin
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»