无法检索数据并将其传递给json

时间:2017-06-02 08:03:31

标签: php mysql ajax pdo

所以我几个小时都坚持这个问题但却无法弄明白。在前端我使用jquery数据表,但我尝试传递ajax的数据要么没有到达(" DataTables警告:table id = user_data - 无效的JSON响应。有关此错误的更多信息,请参阅{ {3}}")或为空。我一直在使用此指南/代码作为参考http://datatables.net/tn/1。我把它改了一点,但它几乎完全一样。

MySQL的:

CREATE TABLE IF NOT EXISTS `geschenke` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`beschreibung` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`erreicht` int(15) DEFAULT NULL,
`ziel` int(15) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci 
AUTO_INCREMENT=31 ;

dbconfig.php:

<?php
$username = 'username';
$password = 'password';
$connection = new PDO( 'mysql:host=localhost;dbname=dbname', 
$username, $password );
?>

function.php:

<?php
function get_total_all_records()
{
include('dbconfig.php');
$statement = $connection->prepare("SELECT * FROM geschenke");
$statement->execute();
$result = $statement->fetchAll();
return $statement->rowCount();
}
?>

fetch.php

<?php
include('dbconfig.php');
include('function.php');
$query = '';
$output = array();
$query .= "SELECT * FROM geschenke ";
if(isset($_POST["search"]["value"]))
{
$query .= 'WHERE beschreibung LIKE "%'.$_POST["search"]["value"].'%" ';
$query .= 'OR name LIKE "%'.$_POST["search"]["value"].'%" ';
}
if(isset($_POST['order']))
{
$query .= 'ORDER BY '.$_POST['order']['0']['column'].' '.$_POST['order']
['0']['dir'].' ';
}
else
{
$query .= 'ORDER BY id DESC ';
}
if($_POST["length"] != -1)
{
$query .= 'LIMIT ' . $_POST['start'] . ', ' . $_POST['length'];
}
$statement = $connection->prepare($query);
$statement->execute();
$result = $statement->fetchAll();
$data = array();
$filtered_rows = $statement->rowCount();
foreach($result as $row)
{
$image = '';
if($row["name"] != '')
{
$image = '<img src="img/'.$row["name"].'" class="img-thumbnail" width="50" 
height="35" />';
}
else
{
$image = '';
}
$sub_array = array();
$sub_array[] = $image;
$sub_array[] = $row["beschreibung"];
$sub_array[] = $row["erreicht"];
$sub_array[] = $row["ziel"];
$sub_array[] = '<button type="button" name="add_button" 
id="'.$row["name"].'" class="btn btn-warning btn-xs update">Add</button>';
$data[] = $sub_array;
}
$output = array(
"draw"    => intval($_POST["draw"]),
"recordsTotal"  =>  $filtered_rows,
"recordsFiltered" => get_total_all_records(),
"data"   => $data
);
echo json_encode($output);
?>

我在脚本的不同部分使用print来查看错误的位置。阵列&#34;数据&#34;在数组内部&#34;输出&#34;总是空洞的。这让我相信fetchAll()不会得到数据。我注意到的另一件事是,如果我删除了&#34; geschenke&#34;在

$query .= "SELECT * FROM geschenke ";

我没有得到上面提到的错误,而是发送了一个带有recordsTotal = 0,recordsFiltered = 28和data []的json。 我尽我所能,凭借我有限的知识,想到但我不再有任何线索为什么它不起作用。

提前致谢!

0 个答案:

没有答案