2015-06-26 3 views
0

Так я работаю в системе постраничной в PHP, я попал в ту часть, где я получаю все сообщения из базы данных с помощью SQL это мой код:Недействительного аргумента для Еогеаспа() ошибка в SQL запросе

$sql = 'SELECT * FROM wp_posts WHERE post_parent="0" ORDER BY ID DESC LIMIT $start, $per_page'; 
$articles = $db->query($sql); 

$ старт должен быть установлен в 0 и $ per_page 20

Но при работе результата через петлю Еогеаспа возвращает это предупреждение:

предупреждения: Неверный аргумент, поставляемый для Еогеаспа() в C : \ WAMP \ WWW \ System-подсказки \ я ndex.php на линии 29 Call Stack

при Мануалах ввода чисел в запросе SQL он прекрасно работает, что я делаю неправильно?

Edit: вот полный код index.php

<?php 
include"header.php"; 

//Delete Auto Draft posts 
$del = 'DELETE FROM wp_posts WHERE post_title="Auto Draft"'; 
$db->query($del); 

//Receive all posts 
$sql = 'SELECT * FROM wp_posts WHERE post_parent="0" ORDER BY ID DESC'; 
$counter = $db->query($sql); 

//Amount of pages 
$row_cnt = $counter->num_rows; 
$per_page = 5; 
$pages = ceil($row_cnt/$per_page); 

//Receive current page 
if(!isset($_GET['page'])) { 
header("location: index.php?page=1"); 
} 
else { 
$page = $_GET['page']; 
} 

$start = (($page - 1)*$per_page); 
$sql = 'SELECT * FROM wp_posts WHERE post_parent="0" ORDER BY ID DESC LIMIT $start, $per_page'; 
$articles = $db->query($sql); 

foreach ($articles as $article) { 
echo' 
<article> 
<h3>'. $article['post_title'] .'</h3>'; 
search_picture($article['post_content']); 
preview($article['post_content']); 
echo '<a href="#">Read the article...</a>'; 
echo'</article>'; 

} 

function search_picture($content) { 
$array = explode('<img',$content); 
if (isset($array[1])) { 
$picture = explode(' />',$array[1]); 
echo '<img' . $picture[0] . ' />'; } 
echo ' 
<style> 
img { 
    width: 150px; 
    height: 100px; 
    float: left; 
    margin-right: 20px; 
}</style> 
'; 
} 

function preview($content) { 
$preview = explode('<!--more-->',$content); 
echo '<p style="margin-right: 20px;">' . $preview[0] . '</p>'; 
} 

include"footer.php"; 
?> 
+0

Опубликовать 'index.php' foreach. –

+0

Можете ли вы опубликовать результат (или частичный, если он слишком велик) из 'var_dump ($ articles);'? –

+0

var_dump возвращает: boolean false –

ответ

0

Я не уверен, если это ваша проблема, но ваша строка здесь:

'SELECT * FROM wp_posts WHERE post_parent="0" ORDER BY ID DESC LIMIT $start, $per_page' 

... заключена в ' одинарные кавычки. PHP, являющийся PHP, интерполяция, такая как вы здесь, будет работать, только если строка заключена в " двойные кавычки. Итак, в качестве первого шага попробуйте переключить " с ' с.

+0

omg это было так просто -.-, спасибо многому человеку! –

+0

Нет проблем вообще. Это в основном связано с тем, как строки в '' '' s оцениваются по сравнению с '' '. Существует небольшая разница в производительности между интерполяцией и конкатенацией, иногда одна из них более подходит, чем другая :) – d0ug7a5

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