Как найти первый столбец без данных?
//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
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)); }