2014-01-24 5 views
1

Я хочу, чтобы считать все, что в таблице, чтобы сайты, я использую именно этот код несколько раз в моем файле PHP, но теперь все внезапное просто не работает больше .. Я за рулем с умаПочему я не могу использовать COUNT (*) сейчас?

$stmt = $mysqli->query("SELECT COUNT (*) AS Anzahl FROM '$tablename'"); 
$anzahl = $stmt->fetch_array(); 
$eintraege = $anzahl["Anzahl"]; 
$stmt->close(); 

$max_eintraege = 2; 


if($eintraege <=2){ 
    $seiten = 1; 


}else{ 
    $seiten = $eintraege/$max_eintraege; 
    $seiten +=1; 
} 


$start = $_GET["site"] * $max_eintraege - $max_eintraege; 
if(!isset($_GET["site"])){ 
    $start = 0; 
} 

Все, что я получаю:

Фатальная ошибка: Вызов функции члена fetch_array() на не-объект в /home/u144584875/public_html/index.php на линии 2377

Я просто не могу узнайте, в чем проблема, он работает как 5 раз в моем скрипте, но не сейчас. Все установлено и правильно, в чем проблема?

ответ

0

Ваш синтаксис SQL неверен. Названия таблиц не должны быть заключены в одиночные кавычки ('). Используйте backticks, чтобы избежать их.

Обновление ваш SQL запрос следующим образом:

SELECT COUNT (*) AS Anzahl FROM `$tablename` 
+0

он все еще не работает :( –

+0

Что содержится в переменной '$ tablename'? Существует ли таблица? – BenM

+0

Да, она существует, $ tablename устанавливается корректно, даже если я изменяю $ tablename на точное имя табуляции такая же ошибка возникает –

3

Вы должны добавить некоторую обработку ошибок, но проблема заключается в следующем:

$stmt = $mysqli->query("SELECT COUNT (*) AS Anzahl FROM '$tablename'"); 

Вы цитируете свое имя таблицы, оно должно быть:

$stmt = $mysqli->query("SELECT COUNT (*) AS Anzahl FROM $tablename"); 

или

$stmt = $mysqli->query("SELECT COUNT (*) AS Anzahl FROM `$tablename`"); 

в случае имя таблицы зарезервированное слово в MySQL, начинается с номера, и т.д.

Edit: Если добавить к этому, прежде чем открыть подключение к базе данных (или где-нибудь выше текущего кода. ..), mysqli бросят ошибки и сказать вам точно, что это не так:

mysqli_report(MYSQLI_REPORT_STRICT); 
// ... 
$stmt = $mysqli->query("SELECT COUNT (*) AS Anzahl FROM `$tablename`"); 
// ... 
+0

Mysqli -> errno было 0, а отчет об ошибке не был установлен, также проблема '' не исправила проблему. :( –

+0

@ user3229043 См. мое редактирование. – jeroen

0

documentation of mysqli::query говорит:

Returns FALSE on failure. For successful SELECT, SHOW, DESCRIBE or EXPLAIN queries mysqli_query() will return a mysqli_result object.

Очевидно, что у вас есть ошибка, и она возвращает FALSE. Используйте mysqli::$error, чтобы узнать, что это.

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