2013-08-26 2 views
-3

Цикл Еогеаспа не отображает ссылку, но если я удалю свой ЗЕЬЕСТ в $ ключевых дисплеи, которые можно увидеть здесь: http://www.rotaryswing.com/swingviewer/videos.phpцикла Еогеаспа и выберите Постулаты

Я пытаюсь создать ссылку динамически на основе идентификаторов которые в моем цикле foreach ниже обозначаются как $ key.

Отображение всей информации отлично работает. Весь исходный код для этого можно найти здесь: http://pastebin.com/hkC4L9UQ

Я понимаю, что это не так, как я должен хранить данные, но у меня не хватает того, как это сделать любым другим способом.

Идентификаторы вставляются в Db в массив с использованием implode, затем разделяются запятой. Затем я взорву их так:

Эхо ключа само по себе работает нормально, как ожидалось.

//convert video id array to single lines 
$pieces = explode(",", $video_ids); 



//iterate through video IDS in our DB 
foreach ($pieces as $key) { 
    echo $key; 



$query4 ="SELECT id, video_name, link, phase FROM videos WHERE id=$key"; 
if ($stmt4 = $mysqli->prepare($query4)) { 
$stmt4->execute(); 
/* bind result variables */ 
$stmt4->bind_result($id, $vid_name, $vid_link, $phase); 
/* fetch values */ 
while ($stmt4->fetch()) { 
echo "<a href='http://www.rotaryswing.com/golf-instruction/video /rst-index.php?cat=$phase&subcat=Rotary%20Swing%20Tour&video=$id&id=$vid_link&name=$vid_name' target=\"blank\">" .$vid_name. "</a><br>"; 

} 

} 
} 

Вы увидите идентификаторы видео в наборах из трех чисел на этой странице. Evrything еще отлично работает.

Спасибо!

+1

В чем вопрос? – Matt

+0

Не работает. Мне нужна помощь, чтобы заставить его работать. –

+5

«Не работает» не является полезным диагнозом. – tadman

ответ

0

Одна вещь о том, что код, который будет трудно понять, заключается в том, что вы игнорируете успех выполнения запроса и считаете его успешным. $stmt4->execute() возвращает логическое значение, указывающее, действительно ли оно было успешным. Вы должны проверить это и, если это не удается, протоколировать/распечатать ошибку.

//convert video id array to single lines 
$pieces = explode(",", $video_ids); 

//iterate through video IDS in our DB 
foreach ($pieces as $key) { 
    $sql ="SELECT id, video_name, link, phase FROM videos WHERE id=?"; 
    if ($stmt = $mysqli->prepare($sql)) { 
     $stmt->bind_param("i", $key); 

     if ($stmt->execute()) { 
      $stmt->bind_result($id, $vid_name, $vid_link, $phase); 
      while ($stmt->fetch()) { 
       echo "<input type='checkbox' name='checkbox[]' id='$id' value='$id' />"; 
       echo "<a href='http://www.rotaryswing.com/golf-instruction/video /rst-index.php?cat=$phase&subcat=Rotary%20Swing%20Tour&video=$id&id=$vid_link&name=$vid_name' target=\"blank\">$vid_name</a><br>"; 
      } 
     } 
     else { 
      trigger_error("SQL query failed: " . $stmt->error, E_USER_ERROR); 
     } 
    } 
} 

Теперь, если по какой-либо причине запрос завершился неудачно, это приведет к регистрации или печати ошибки в зависимости от настроек вашего сервера.

Также обратите внимание на две вещи. Во-первых, я использую там параметризованный запрос, который предотвращает SQL-инъекцию. Во-вторых, я намеревался использовать код в здравом смысле, делая это намного легче читать, чем ваш код.

+0

Спасибо за ответ. Я проверю это и посмотрю, что у меня проблема –

+0

hmm .. это работает, но только показывает один результат, когда у меня есть два, которые я знаю. Любой способ показать все результаты с помощью этого кода, который вы предоставили? –

+0

Вы проверили массив '$ pieces', чтобы убедиться, что у него есть все ID, которые вы ожидаете? Этот фрагмент кода просто показывает вам видео в этом списке, поэтому, если вы только получаете его, и нет ошибки, то, похоже, только один возвращается. Используйте функцию «var_dump», чтобы узнать, что содержат переменные. - Также убедитесь, что сообщение об ошибках включено. В противном случае ошибка SQL не будет напечатана. – Atli

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