Как мне написать оператор SELECT IF с 2 условными выражениями?

#php #mysql #syntax

#php #mysql #синтаксис

Вопрос:

итак, я получил этот PHP-код здесь:

 SELECT status , IF(type = '" . mysqli_real_escape_string($con,$type) . "' , type, '') AS status FROM novacorp.status WHERE type = '" . mysqli_real_escape_string($con,$type) . "' LIMIT 1;
  

Я также хочу добавить к этому еще одно условие, чтобы оно выбирало статус только в том случае, если столбец info также равен чему-то, что я передаю с помощью escape-строки, как показано выше.

То же самое для этого оператора:

 UPDATE `novacorp`.`status` SET `status`=". $status ." WHERE `type`='" . mysqli_real_escape_string($con,$type) . "';
  

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

1. Если вы используете подготовленный оператор , ваш код будет намного легче читать. Ознакомьтесь с руководством, чтобы узнать, как это сделать.

2. Вставьте case when .. then else .. end SQL

Ответ №1:

 IF(type=whatever AND info=other, valueiftrue, valueiffalse)
  

вероятно, это то, что вы хотите

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

1. И то же самое для UPDATE : WHERE type=this AND info=that

2. Спасибо! Каким именно будет это утверждение? С помощью 2 условных выражений: SELECT status , IF(type = '" . mysqli_real_escape_string($con,$type) . "' , type, '') AS type FROM novacorp.status WHERE type = '" . mysqli_real_escape_string($con,$type) . "' LIMIT 1;

3. Этот оператор избыточен. Поскольку у вас уже есть WHERE условие type , IF условие (то же самое) всегда истинно, поэтому вы можете упростить его до SELECT status,type FROM novacorp.status WHERE type='".mysqli_real_escape_string($con,type)."' LIMIT 1 . Чтобы добавить еще одно условие, просто добавьте, например, ` AND field=value`

4. Не могли бы вы дать мне полный оператор с добавленным условным info='".mysqli_real_escape_string($con,$additional_info)."' выражением? Похоже, у меня это не работает

5. SELECT status,type FROM novacorp.status WHERE type='".mysqli_real_escape_string($con,type)."' AND info='".mysqli_real_escape_string($con,$additional_info)."' LIMIT 1