Если заявление не работает - PullRequest
0 голосов
/ 18 июня 2009

Я хочу, чтобы приведенный ниже код был «$ entry not Существует», если в столбце «site» в базе данных нет значения $ entry. Однако этого не происходит, когда я ввожу значение для $ entry, которое, как я знаю, находится не в столбце «site» в базе данных. Что-то не так с моим утверждением if?

Заранее спасибо,

John

$result = mysql_query("SHOW TABLES FROM feather") 
or die(mysql_error()); 


while(list($table)= mysql_fetch_row($result))
{
  $sqlA = "SELECT COUNT(*) FROM `$table` WHERE `site` LIKE '$entry'";

  $resA = mysql_query($sqlA) or die("$sqlA:".mysql_error());
  if(mysql_num_fields($resA)>0){
  list($isThere) = mysql_fetch_row($resA);
  if ($isThere)
  {
     $table_list[] = $table;
  }
  }
  else{
print "<p class=\"topic\">$entry does not exist</p>\n";
}
}

Ответы [ 2 ]

4 голосов
/ 18 июня 2009

Да. Тем не менее, ваше форматирование не совсем справедливо, попробуйте очистить его, чтобы его было легче понять. Среда IDE NetBeans или даже Zend Development Environmont ($) выполняют автоматическое форматирование кода, что значительно облегчает жизнь.

$result = mysql_query("SHOW TABLES FROM feather") or die(mysql_error()); 
while(list($table)= mysql_fetch_row($result)) {
    $sqlA = "SELECT COUNT(*) FROM `$table` WHERE `site` LIKE '$entry'";

    $resA = mysql_query($sqlA) or die("$sqlA:".mysql_error());
    if(mysql_num_fields($resA)>0){
        list($isThere) = mysql_fetch_row($resA);
        if ($isThere) {
            $table_list[] = $table;
        }
    } else{
        print "<p class=\"topic\">$entry does not exist</p>\n";
    }
}

Короче говоря:

mysql_num_fields ($ resA) ВСЕГДА больше нуля, потому что функция COUNT (*) всегда будет возвращать значение независимо от (0 или 1 или 1000000 и т.

Чтобы исправить, поднимите еще один уровень вверх, и я бы использовал принуждение, чтобы быть более безопасным. Наконец, mysql_num_fields не является действительно необходимым, потому что вы знаете, что это всегда 1:

$result = mysql_query("SHOW TABLES FROM feather") or die(mysql_error()); 
while(list($table)= mysql_fetch_row($result)) {
    $sqlA = "SELECT COUNT(*) FROM `$table` WHERE `site` LIKE '$entry'";
    $resA = mysql_query($sqlA) or die("$sqlA:".mysql_error());
    list($isThere) = mysql_fetch_row($resA);
    $isThere = intval($isThere);
    if ($isThere > 0) {
        $table_list[] = $table;
    } else{
        print "<p class=\"topic\">$entry does not exist</p>\n";
    }
}

И вот оно у вас.

0 голосов
/ 15 октября 2009

Пожалуйста, ради любви к Интернету, не создавайте SQL-запрос самостоятельно. Используйте PDO .

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