У меня есть форма для обновления сведений о пользователе, и им не нужно заполнять каждое поле. Из-за этого он будет передавать пустую строку в базу данных через 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?
Вы можете использовать оператор 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'";
Я бы сделал это
<?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'"; ?>
Но вы действительно должны беспокоиться о том, насколько неуверен ваш код.
Сначала запустите инструкцию SELECT и выполните mysql_num_row (), если это возвращает значение > 0, затем exit ()