2014-03-17 4 views
0

Я пытаюсь выбрать некоторые строки из своей базы данных и сгенерировать определенный HTML-код, где мой выбор находит что-то и другой HTML, если это не так.PHP Mysql select

Это мой код. Проблема заключается в том, что он всегда не находит совпадений:

$pos = 0; 
$con = mysqli_connect('localhost', 'user', 'pass', 'database'); 

if (mysqli_connect_error()) { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 
$result = mysqli_query($con, "SELECT * FROM table1 where user = 'user'") 
    or die("Error: ".mysqli_error($con)); 

while ($row = mysqli_fetch_array($result)) { 
    $result2 = mysqli_query($con,"SELECT * FROM table2 where id = '" 
     .$row['id']."'") or die("Error: ".mysqli_error($con)); 
    $dbpos = $row['pos']; 
    while ($row2 = mysqli_fetch_array($result2)) { 
     if ($dbpos == $pos) { 
      echo 'found<br/>'; 
     } else { 
      echo 'empty<br/>'; 
     } 
     $pos++; 
    } 
} 
mysqli_close($con); 

Я всегда получаю empty. Что я делаю не так?

+0

Вы пытались использовать 'print_r' или' var_dump' $ row или $ row2? Также вам, вероятно, не нужно выполнять два запроса - вы, вероятно, можете сделать 'JOIN' и просто сделать один запрос. – dethtron5000

+0

Я новичок в php, я стараюсь, чтобы код был прост. Это все, что я мог придумать. Если бы вы могли быть более конкретными .. :) – user1885099

+0

Можете ли вы рассказать нам, что ваши данные? Моя помощь объясняет пустые возвращения – Chitowns24

ответ

0

Попробуйте сделать свой запрос что-то вроде

Select * from table1 
inner join table2 
on table1.id=table2.id 
Where table1.user='user' 

это будет делать то, что вы хотите в 1 запрос

Если вы получаете 1 результат печати найдено. Если вы получите 0, напечатайте пустой

0

Если вы просто хотите определить, имеет ли ваш запрос пустой результат или сколько результатов найдено, вы можете использовать mysqli_num_rows и удалить второй цикл while ($ result2).

$noofrows=mysqli_num_rows($result2); 

if($noofrows==0){ 

echo "Empty<br>"; 

} 

else { 

echo "There are ".$noofrows." record/s found."; 

} 
0

Попробуйте это. Соединения SQL могут быть очень эффективными в зависимости от структуры ваших таблиц.

//Query the DB for all of the rows in table2 where the table2 id column value 
// is equal to the value of the id column value in table1 
$query = "SELECT table2.* 
      FROM table1 
      INNER JOIN table2 
      ON table1.id = table2.id 
      WHERE table1.user = 'user'"; 
$result = mysqli_query($con, $query)or die(mysqli_error()); 

Если вы ждете, чтобы вернуть более одной строки, то может пригодиться

следующее Если нет, то просто это сделать

while($row = mysqli_fetch_array($result)) { 
    $dbpos = $row['pos']; 
} 

if($dbpos == $pos) { 
    echo 'found<br/>'; 
} else { 
    echo 'empty<br/>'; 
} 

Подробнее о SQL присоединяется here.