我写了一个代码,使用getJSON(见下文)。 FireBug返回以下错误信息:getJSON:NetworkError:500内部服务器错误
"NetworkError: 500 Internal Server Error - http://localhost:10088/test/myquery.php?query=SELECT%20tm%20FROM%20schedule%20WHERE%20val=%27BT009%27;"
我找不出这个错误的原因。任何帮助,高度赞赏。
PS我在MySQL查询浏览器中测试了这个SQL查询。它已经返回了3行。
mainPage.php
<script>
function updateList(){
var query = "SELECT tm FROM schedule WHERE val='BT009';";
$.getJSON(
'myquery.php?query='+query,
function(data)
{
alert(data);
}
);
}
$(document).ready(function() {
updateList();
});
</script>
myquery.php
<?php
include_once 'include/connect_db.php';
if (isset($_GET['query'])) {
$query = $_GET['query'];
$condb = connectDB();
$result=execute_query($query);
closeDB($condb);
$rows = array();
if ($result && mysql_num_rows($result)) {
while($row = mysql_fetch_array($result)) {
$rows[] = $row['tm'];
}
}
var_dump($rows);
echo json_encode($rows);
} else {
echo json_encode("Failed");
}
?>
请不要使用'mysql_ *'功能,它们不再被维护,并且社区已经开始[deprecation process](http://goo.gl/KJveJ)。相反,您应该了解[准备好的语句](http://goo.gl/vn8zQ)并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能决定,[本文](http://goo.gl/3gqF9)将有助于选择。如果你想学习,[这里是一个很好的PDO相关教程](http://goo.gl/vFWnC)。 – vascowhite 2012-08-11 10:58:13
这不是你的问题的答案,但我不提起它是不负责任的。您正在JavaScript中生成一个SQL字符串并将其发送到您的服务器以供执行。这是一个非常严重的应用程序安全漏洞,称为SQL注入。不要这样做。真的,真的,*真的*不。这是OWASP站点上的[关于它的信息](https://www.owasp.org/index.php/SQL_Injection)。 – Barend 2012-08-11 10:59:44
如果我使用URL yourdomain.com/myquery.php?query="drop table schedule“,会发生什么情况? – vascowhite 2012-08-11 11:00:56