将数据库信息从php传输到mysql_fetch_array时没有按预期工作


Transmitting database information from php to mysql_fetch_array not acting as expected

如果有人知道我的问题有一个可用的答案,我很抱歉,但是经过一周的网上搜索和试用,我想我应该问专家。

:通过服务器端代码(在本例中为php)查询SQL数据库,然后将该数据库信息传递给网页上的javascript,以允许动态生成按钮。注意,将从数据库返回多行。一旦按钮生成,他们将调用php代码来改变数据库中的值,但这是我目前正在努力的第一部分。

当前解决方案(不完全工作):我认识到在这段代码上有优化要做,但是因为它仍然是我试图对问题进行排序,我将在以后自己审查一点,不需要详细说明。

概述:PHP通过mysql_query发送一个mysql查询从数据库中获取信息。然后使用AJAX与json_encode一起对php中的信息进行编码,然后使用echo将答案打印到javascript中。

PHP代码:

    <?php //start php code
include 'DatabasePhp/openDatabase.php'; //includes my mysql_connect code to connect to the database. Works.
$query = 'SELECT `users`.`user_name`, `users`.`user_id`, `users`.`join_date`'
. ' FROM users'
. ' LIMIT 0, 30 ';
$result= mysql_query($query);
include 'DatabasePhp/closeDatabase.php';
$aa = mysql_fetch_array($result, MYSQL_ASSOC);
$total_array[0] = $aa;
$total_array[1] = array('user_name' => 'bb','day' => '5');
$formatted_variable_pass = json_encode($total_array);
echo $formatted_variable_pass;
?>
PHP指出:

一旦解决了这个问题,我将使用while循环遍历数据库结果的每一行,并将它们添加到$total_array中。目前,它只设置了两个数组索引来突出我的问题。$total_array[0]是存储从mysql查询的答案,$total_array[1]是我生成一个关联数组(就像我认为我是从mysql_fetch_array)。

Javascript代码:

    <script type="text/javascript" language="JavaScript">
document.write("Well your starting javascript");
var btn_num = 0;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function() // the function called when a result is returned from the php
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
var responce_json = JSON.parse(xmlhttp.responseText);
    document.getElementById("txtHint").innerHTML="got responce "+responce_json[0]['user_name']+"  "+responce_json[1]['user_name'];
}else if(xmlhttp.status==404){
    document.getElementById("txtHint").innerHTML="Not found";
}else if(xmlhttp.readyState==0){
    document.getElementById("txtHint").innerHTML="Responce was 0";
}else{
    document.getElementById("txtHint").innerHTML="Not completed the responce";
}
}
xmlhttp.open("POST","DatabasePhp/getUsers.php",true);
xmlhttp.setRequestHeader("Content-type","application/json;charset=UTF-8");
xmlhttp.send(null);
document.write("and the results are .... ");
</script>

Javascript注释:代码基本上基于使用的浏览器创建XMLHttpRequest类型类,然后通过xmlhttp.open发送POST请求。响应是通过xmlhttp.onreadystatechange=函数()处理的,即只有在确认答案已经完成时才会写入答案,即当xmlhttp。readyState = = 4,,xmlhttp.status = = 200 .

问题:我有麻烦传递mysql_fetch_array数据到javascript。我之所以在$total_array[1]中放置一个php关联数组,是因为我想证明我可以传递变量。代码成功地将该数组传递到另一个数组中,我可以通过responce_json[1]['user_name']在javascript中访问。不幸的是,无论我如何尝试获得从mysql_fetch_array返回的关联数组(设置为返回关联数组),在responce_json[0]['user_name']完成的当前代码中,我没有得到答案。在我的试验期间,当我试图获得aa关联数组[0]时,我已经返回了'null'的混合,并且通常我的代码在我试图访问mysql返回的关联数组的['user_name']时不完成代码。

所以问题是:我是否错过了由mysql_fetch_array返回的关联数组(设置为通过MYSQL_ASSOC返回关联数组),它不像手动创建的关联数组那样响应(一旦在javascript中-在php中正常工作),我不知道为什么。有人理解我如何转换/确保mysql数组反应像我的手动吗?

附加:它不是sql有问题,因为当我包括php到我的网页,而不是传递给javascript,回写到网页的响应是'[{"user_name":"Frank","user_id":"1","join_date":"2013-05-15"},{"user_name":"bb","day":"5"}]'。因此,它成功地从数据库中检索信息,对我来说,这看起来像一个数组,里面有子关联数组,这就是我所追求的,但我只能检索'bb'的user_name,不能在javascript中得到Frank。PS我意识到这两个数组只有user_name是共同的,但这是我目前试图访问的唯一一个。

很抱歉写了这么长一篇,我只是想把我所有的想法都写下来。

建议结果:mysql_fetch_assoc - Orangepill;我试过了,没有变化。从所有的文档,我可以在网上审查,我明白,这返回相同的mysql_fetch_array($result, MYSQL_ASSOC);

移动closeDatabase.php - Michel Feldheim;移动这个对输出没有影响。

console.log(responce_json) - Orangepill;谢谢你,没想到我可以这样复习。当我询问XMLHttpRequest时,我通过控制台返回以下内容:XMLHttpRequest {statusText: "OK", status: 200, response: "[null,{"user_name":"bb","day":"5"}]", responseType: ", responseXML: null…}。从这里我可以看到,mysql_fetch_array的答案被传输为null,这是由我收到的错误"未捕获的错误:InvalidStateError: DOM Exception 11"引起的。

您包含了一个名为closeDatabase.php的脚本。如果这样做就像名字所暗示的那样,您应该在获取所有数据之后执行

毕竟我错了。

问题似乎是当调用php脚本生成网页时,脚本中的include语句能够被访问。当从javascript代码中调用脚本时,无法找到处理打开和关闭数据库的包含语句。

这会导致不返回答案。