什么';这个数据库调用有问题


What's wrong with this database call?

-问题仍未解决-

我试图调用一个数据库,将表的所有行放在一个数组中,将该表作为json数据传递给我的JS,然后将该数据用作函数的参数。

当我运行脚本时,什么也没发生。我在控制台中没有收到任何错误,脚本的其余部分正常加载。我对mySQL和PHP还很陌生,我在这里做错了什么?我怀疑我不知怎么搞砸了php。

  • XAMPP服务器,正在我的桌面上测试
  • 所有链接的文件都在同一目录中
  • 任何位置都没有显示可见的错误。据我所知,该脚本一开始甚至没有尝试加载PHP,但也没有在firebug的控制台中显示错误

尝试

  • 重命名不带空格的表
  • 将for循环放置在回调函数中
  • 修改php错误

这是我正在使用的更新JS:

    this.taskMenu = function()
    {
        var table = [];
        $.getJSON("taskMaster.php", {"table" : "firstlist"},
            function(data)
            {
                table.push(data);
                for(i=0; i<table.length; i++)
                {
                    var taskId = table[i].taskName.replace(/'s+/g,"") + i;
                    formatTask("interface",taskId,table[i].taskName,table[i].taskDescription,table[i].taskComplete);
                }
            });
     }

这是更新后的PHP:

error_reporting(E_ALL); ini_set('display_errors','On');
$con = mysql_connect("localhost", "root", "m3648y73");
if (!$con){die('Could not connect: ' . mysql_error());};
mysql_select_db("tasklistdb", $con);
$table = $_GET['table'];
$sql = mysql_query("SELECT taskName, taskId, taskDescription, taskComplete FROM `".$table."`");
$listTasks = array();
while ($row_user = mysql_fetch_assoc($sql))
    $listTasks[] = $row_user;
echo json_encode($listTasks);
mysql_close($con);

我是否正确地链接到数据库?

getJSON是异步调用。因此,在它可以从PHP获取值并执行回调函数之前,它会移动到for循环,这里的表是空的。

解决方案:将for循环转移到回调函数

php文件

p>之所以会发生这种情况,是因为异步请求后的js代码比请求本身更早执行。试试这个:
this.taskMenu = function()
{
    var table = [];
    $.getJSON("taskMaster.php", {table : "first list"},
        function(data)
        {
            table.push(data);
            for(i=0; i<table.length; i++)
            {
                var taskId = table[i].taskName.replace(/'s+/g,"") + i;
                formatTask("interface",taskId,table[i].taskName,table[i].taskDescription,table[i].taskComplete);
             }
        });
}

您的表名不能是"第一个列表"

MySQL表名中不能有空格。

此外,您应该将put table放在JSON值中,并使用双引号,如{"table":"table_name"}