PHP – SQL выбрать первый столбец без данных

Как найти первый столбец без данных?

//column pet1='dog' //column pet2='' //column pet3='' //column pet4='cat' if($F=="getempty"){ $uid=$_GET["uid"]; $sql = mysql_query("SELECT DISTINCT pet1,pet2,pet3,pet4 FROM a WHERE uid='".$uid."' AND pet1='' OR pet2='' OR pet3=''OR pet4=''"); while($column=mysql_fetch_field($sql)){ $empty=$column->name; echo json_encode(array("empty"=>$empty)); } }else{} 

Я продолжаю пытаться, но до сих пор он просто возвращает все имена столбцов, если один пуст

Pet1, pet2, PEt3, pet4

Solutions Collecting From Web of "PHP – SQL выбрать первый столбец без данных"

DISTINCT объединит строки, которые в точности одинаковы (все выбранные столбцы одинаковы) и вернут их.

Чтобы получить имя первого пустого столбца, используйте запрос типа:

 SELECT CASE WHEN pet1 = '' THEN 'pet1' WHEN pet2 = '' THEN 'pet2' WHEN pet3 = '' THEN 'pet3' WHEN pet4 = '' THEN 'pet4' ELSE NULL END AS firstempty FROM a WHERE uid = '$uid'; 

Идея состоит в том, что оператор CASE проверяет каждый по порядку, и поиск пустого возвращает имя столбца, не проверяя остальную часть.

Не забудьте выйти из $uid с mysql_real_escape_string() прежде чем передавать его в запрос.

 $uid = mysql_real_escape_string($uid); 

Поскольку мы теперь получаем имя столбца внутри поля, которое называется firstempty , нам также необходимо изменить способ его получения:

 while($row = mysql_fetch_assoc($sql)){ $empty = $row['firstempty']; echo json_encode(array("empty"=>$empty)); }