2013-06-23 6 views
0

Результат второго запроса перезаписывает результат первого запроса. Я никогда раньше не сталкивался с подобной проблемой.PHP mysql: 2 похожих запроса пересчитывает результаты только второго запроса

MySQL таблицы:

updateid picture movie 
    14   1  1 
    22   0  1 
    33   1  0 

PHP файл:

<div id="imagecheck"> 
<?php 
$image_check= query("SELECT picture FROM list WHERE updateid = '$updateid' "); 
foreach ($row as $image_check); 

if (!($image_check)) 
{ 
?> 

    <div class="result" id="camera<?php echo $updateid ?>">FOO</div> 

<?php 
} 
else 
{ 
    ?> 
    <div class="result" id="camera<?php echo $updateid ?>">BAR</div> 

    <?php 
} 

?> 
</div> 
<div id="moviecheck"> 

    <?php 
    $movie_check = query("SELECT movie FROM list WHERE updateid = '$updateid' "); 
    foreach ($row as $movie_check); 
    if (!($movie_check)) 
    { 
    ?> 
<div class="result1" id="movie<?php echo $updateid ?>">FOO</div> 

<?php 
} 
else 
{ 
    ?> 
    <div class="result1" id="movie<?php echo $updateid ?>">BAR</div> 

    <?php 
} 

?> 

, когда я запускать эти 2 запросов, результат для

14 эхо BAR BAR

22 вторит Foo Foo

33 Отголоски FOO FOO

Любые идеи, что может пойти не так здесь?

+0

попробуйте в то время как массивы извлечения mysqli затем помещают вывод в таблицу. Образец можно найти в w3schools. Таким образом, вы знаете, как извлекать строки. Потому что то, что вы делаете, больше связано с тем, что html-структура использует более простой первый, прежде чем использовать foreach. –

ответ

4

Возможно, опечатки. вы используете переменные переменные:

foreach ($row as $$movie_check); 
        ^^--- note the doubled $ 

e.g.

$x = 'foo'; 
$foo = 'bar'; 
echo $$x; // outputs 'bar' 
echo $x; // outputs 'foo' 

Как правило, никогда не используйте переменные переменные. Они делают совершенно незаметный и почти невозможный для отладки код.

+0

Спасибо, что поймали это. Как вы сказали, это была опечатка, когда я копировал свой код в SO, просто исправил его. –

+0

Код также очень запутан. вы используете $ row в foreach, но никогда не показываете, как это определено. не знаю, что делает этот вызов 'query()'. но как написано сейчас, ваш foreach() переписывает результаты query(), как только начинается foreach. –

+0

Если я удаляю foreach, то запросы вообще не работают: они выводят строку для каждого элемента (тогда как не все строки в моей таблице равны 1. Некоторые из них равны 0). –

Смежные вопросы