我有一个奇怪的问题,我正在尝试使用对我的php程序的ajax调用来填充数据表,该程序从内部从数据库获取数据。
的PHP:
<?php
require_once('config.php');
$query = mysql_query("select * from productdetails");
while($fetch = mysql_fetch_array($query))
{
$output[] = array ($fetch[0],$fetch[1],$fetch[2],$fetch[3],$fetch[4],$fetch[5]);
}
echo json_encode($output, JSON_FORCE_OBJECT);
?>
HTML(ajax呼叫):
$.ajax({
url: 'process.php?method=fetchdata',
data: "json",
success: function(s){
console.log($(s).text());
oTable.fnClearTable();
for(var i = 0; i < s.length; i++) {
oTable.fnAddData([
s[i][0],
s[i][1],
s[i][2],
s[i][3],
s[i][4],
s[i][5]
]);
} // End For
},
error: function(e){
console.log(e.responseText);
}
});
生成的输出为
(!)不建议使用:mysql_connect():不建议使用mysql扩展,以后将删除它:在第2行的C:\ wamp \ www \ datatableone \ process.php中使用mysqli或PDO
调用堆栈
#TimeMemoryFunctionLocation
10.0010242552 {main}().. \ process.php:0
20.0010242840http://www.php.net/function.mysql-connect'target ='_ new'> mysql_connect
()。\ process.php:2
{“ 0”:{“ 0”:“ 1”,“ 1”:“ Iron”,“ 2”:“ AX12”,“ 3”:“ Google”,“ 4”:“ 21.95”,“ 5”: “ HW”},“ 1”:{“ 0”:“ 2”,“ 1”:“ DartBoard”,“ 2”:“ AZ52”,“ 3”:“ Apple”,“ 4”:“ 12.95”, “ 5”:“ SG”},“ 2”:{“ 0”:“ 3”,“ 1”:“篮球球”,“ 2”:“ BA74”,“ 3”:“ Microsoft”,“ 4”: “ 29.95”,“ 5”:“ SG”},“ 3”:{“ 0”:“ 4”,“ 1”:“ Compopper”,“ 2”:“ BH22”,“ 3”:“ Google”, “ 4”:“ 24.95”,“ 5”:“ HW”},“ 4”:{“ 0”:“ 5”,“ 1”:“ Gas Grill”,“ 2”:“ BT04”,“ 3” :“ Apple”,“ 4”:“ 149.95”,“ 5”:“ AP”},“ 5”:{“ 0”:“ 6”,“ 1”:“ Washer”,“ 2”:“ BZ66” ,“ 3”:“ Google”,“ 4”:“ 399.99”,“ 5”:“ AP”}}
但是我所需的输出应该是:(仅json)
{“ 0”:{“ 0”:“ 1”,“ 1”:“ Iron”,“ 2”:“ AX12”,“ 3”:“ Google”,“ 4”:“ 21.95”,“ 5”: “ HW”},“ 1”:{“ 0”:“ 2”,“ 1”:“ DartBoard”,“ 2”:“ AZ52”,“ 3”:“ Apple”,“ 4”:“ 12.95”, “ 5”:“ SG”},“ 2”:{“ 0”:“ 3”,“ 1”:“篮球球”,“ 2”:“ BA74”,“ 3”:“ Microsoft”,“ 4”: “ 29.95”,“ 5”:“ SG”},“ 3”:{“ 0”:“ 4”,“ 1”:“ Compopper”,“ 2”:“ BH22”,“ 3”:“ Google”, “ 4”:“ 24.95”,“ 5”:“ HW”},“ 4”:{“ 0”:“ 5”,“ 1”:“气体
Grill“,” 2“:” BT04“,” 3“:” Apple“,” 4“:” 149.95“,” 5“:” AP“},” 5“:{” 0“:” 6“,” 1“:” Washer“,” 2“:” BZ66“,” 3“:” Google“,” 4“:” 399.99“,” 5“:” AP“}}
任何建议,请。
谢谢
赛
解:
PHP:
<?php
$servername = "localhost";
$username = "root";
$password = "123456";
try {
$conn = new PDO("mysql:host=$servername;dbname=holt", $username, $password);
$statement=$conn->prepare("SELECT * FROM productdetails");
$statement->execute();
$results=$statement->fetchAll(PDO::FETCH_ASSOC);
$json=json_encode($results);
echo $json;
} catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
?>
感谢您的建议。
最佳答案
如注释中所述,您应该关闭警告,或者更好的方式是,以不产生警告的方式编写代码。
在关闭警告时:
Turn off warnings and errors on php/mysql
您可以使用@符号抑制内联错误,该符号是php中的错误控制运算符。将@放在mysql_connect()行的开头应该可以摆脱它,但是您应该切换到PDO!
在PDO(我推荐并使用)上:
http://code.tutsplus.com/tutorials/why-you-should-be-using-phps-pdo-for-database-access--net-12059
PDO保护您免受SQL注入的侵害,并允许将查询发送到数据库并事先进行构造,然后再通过“占位符”发送输入。
关于javascript - 我的ajax调用返回带有json数据的html,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34110028/