MySQL Вставить, если идентификатор существует, еще отправить ошибку пользователю, какой метод я могу использовать?

#php #mysql

#php #mysql

Вопрос:

Мне нравится немного изменять свой код, и если int $itemID не существует, пользователь должен инициировать $retval die , если $itemID существует, пользователь должен продолжить обновление БД.

Какой метод наиболее подходит?

код:

 $upd = "UPDATE booking SET userID ='$userID' WHERE itemID ='$itemID'";

$retval = mysql_query($upd, $con);
if(!$retval){
   die('Could not update data: '.mysql_error());
   } 
echo "Updated data successfullyn";
  

Комментарии:

1. Здесь есть вопрос? И вам следует переключиться на mysqli функции, поскольку mysql они устарели

2. Я видел, что мне было совершенно непонятно, текст теперь редактируется

Ответ №1:

Вы можете использовать mysql_affected_rows()

Пример использования из руководства пользователя PHP:

 /* Update records */
mysql_query("UPDATE mytable SET used=1 WHERE id < 10");
printf ("Updated records: %dn", mysql_affected_rows());
mysql_query("COMMIT");
  

Пожалуйста, обратите внимание, что mysql_* начиная с php 5.5.0 методы будут устаревшими. В качестве альтернативы вы можете использовать подготовленные инструкции PDO

Комментарии:

1. Да, я изменю свой код для PDO, когда получу правильную работу функции

2. @user3751216 Идеально… Я предоставил вам пример mysql_affected_rows(), который возвращает количество затронутых строк 🙂

Ответ №2:

Вы должны проверить количество затронутых строк, например:

 $upd = "UPDATE booking SET userID ='$userID' WHERE itemID ='$itemID'";

$retval = mysql_query($upd, $con);

if(!$retval || 0 === mysql_affected_rows()) {
   die('Could not update data: '.mysql_error());
}

echo "Updated data successfullyn";
  

Кроме того, как указано в комментарии, вы должны использовать mysqli_ или даже PDO вместо mysql_ , поскольку последний серьезно устарел.

Ответ №3:

Как насчет этого?

 $upd = "UPDATE booking SET userID ='$userID' WHERE itemID ='$itemID'";

if( isset($itemID) amp;amp; $retval = mysql_query($upd, $con) ){
    echo "Updated data successfullyn";
}
else {
    die('Could not update data: '.mysql_error());
}
  

(Да, разумно обновить до mysqli_ *.)

Ответ №4:

Попробуйте, чтобы это сработало

 if(isset($ItemId))
{
    $upd = "UPDATE booking SET userID ='$userID' WHERE itemID ='$itemID'";
    $retval = mysql_query($upd, $con);
    if(!$retval){
       die('Could not update data: '.mysql_error());
       } 
    echo "Updated data successfullyn";
}
else
{
    exit();
}
  

Ответ №5:

вам нужно проверить с empty()

 if(!empty($itemID)) {
 $upd = "UPDATE booking SET userID ='$userID' WHERE itemID ='$itemID'";
 $retval = mysql_query($upd, $con);
 if(!$retval){
   die('Could not update data: '.mysql_error());
   } 
 echo "Updated data successfullyn";
}
else {
  echo "Item id not existn";    
}
  

Ответ №6:

Не могли бы вы сформулировать вопрос лучше? Я не понимаю, хотите ли вы проверить, существует ли переменная или пользователь с этим идентификатором.

Если вы проверяете, существует ли пользователь, я думаю, вам следует выполнить запрос SELECT, чтобы найти пользователей с этим идентификатором и подсчитать результаты с помощью mysql_num_rows() , таким образом, вы можете обнаружить проблемы, прежде чем пытаться выполнить запрос на ОБНОВЛЕНИЕ. Примечание: как сказал Амир в своем комментарии, mysql_ * будет (или уже есть) обесценен в PHP и будет удален в какой-то будущей версии. Попробуйте заглянуть в mysqli для простого обновления или загляните в PDO для более расширенной функциональности.