Как я могу предотвратить MySQL от обновления столбца с пустой строкой? - PullRequest
4 голосов
/ 16 марта 2012

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

$q = "UPDATE mdl_user SET firstname='$fname', lastname='$lname', email='$email',
      address='$address', city='$city', school='$school', phone1='$phone'
      WHERE id='$uid'";

Есть ли способ для MySQL проверить, является ли, например, $fname пустая строка и если она пуста, не обновлять это поле?

Если нет, то как мне это сделать в PHP?

Ответы [ 3 ]

10 голосов
/ 16 марта 2012

Вы можете использовать оператор IF для каждого поля, которое необходимо проверить. Например:

$q = "UPDATE mdl_user SET firstname=IF(LENGTH('$fname')=0, firstname, '$fname'), lastname=IF(LENGTH('$lname')=0, lastname, '$lname'), email=IF(LENGTH('$email')=0, email, '$email'), address='$address', city='$city', school='$school', phone1='$phone' WHERE id='$uid'";
3 голосов
/ 16 марта 2012

Я бы сделал это

<?php
if ($fname) {
 $fname = "firstname='$fname',";
} else {
 $fname = '';
}
$q = "UPDATE mdl_user SET $fname lastname='$lname', email='$email', address='$address', city='$city', school='$school', phone1='$phone' WHERE id='$uid'";
?>

Но вы действительно должны быть обеспокоены тем, насколько небезопасен ваш код.

0 голосов
/ 16 марта 2012

Сначала запустите оператор SELECT и выполните mysql_num_row () , если это возвращает значение > 0 , затем exit ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...