【问题标题】:error in json function saving data into databasejson函数将数据保存到数据库中的错误
【发布时间】:2011-05-17 23:02:05
【问题描述】:

我已经尝试了很多,但我无法找出这个函数将两个值保存到数据库中的问题。另一个函数保存一个值一直工作正常。它在这里表现得很奇怪。有时发送“父”值,有时停止发送,但从不发送 msg 值。这里是函数。它适用于一个输入,即父级,但问题始于添加第二个输入。

<script> 
function ADDLISITEM(form)
{ 
var parent = form.txtInput.value;
    var msg    = form.msgInput.value;
    form.txtInput.value = "";
    form.msgInput.value = "";
    var url = "send_mysql.php"
var request = null;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
request=new XMLHttpRequest();
 }
else
{// code for IE6, IE5
request=new ActiveXObject("Microsoft.XMLHTTP");
}
request.open("POST", url, true);
request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
request.setRequestHeader("Connection", "close");
request.onreadystatechange = function(){
    if (request.readyState == 4) {
        if (request.status == 200) {
            //alert('POST');
    } else {
        alert(request.status); // fails here
    }
    }
}
request.send("parent=" + encodeURIComponent(parent).replace(/%20/g, '+')+"&msg=" + 
    encodeURIComponent(msg).replace(/%20/g, '+'));
}
</script>

这是send.php

$username = "babar";
$password = "k4541616";
$hostname = "本地主机";
$dbh = mysql_connect($hostname, $username, $password) or die("无法连接
到 MySQL");
$selected = mysql_select_db("spec",$dbh) or die("Could not select first_test");

  //die(var_export($_POST,TRUE));

  $parent = $_POST['parent'];
  $msg = $_POST['msg'];
  $name   = 'Akhtar Nutt';
  //$parent2 = json_decode($parent);
  $msg_ID = '2q7b2sfwwe';
  //$msg2    = json_decode($msg);
  $query  =  "INSERT INTO msg2_Qualities(id,name,msg,msg_id,parent) VALUES  
  ('','$name','$msg','$msg_ID','$parent')";
    if(!mysql_query($query, $dbh))
        {die('error:' .mysql_error())
      ;}

?>

【问题讨论】:

    标签: php mysql json


    【解决方案1】:

    改变

    request.send("parent=" + encodeURIComponent(parent).replace(/%20/g, '+')+"msg=" + encodeURIComponent(msg).replace(/%20/g, '+'));
    

    到:

    request.send("parent=" + encodeURIComponent(parent).replace(/%20/g, '+')+"&msg=" + encodeURIComponent(msg).replace(/%20/g, '+'));
    

    您的查询字符串中缺少参数分隔符 &amp;...

    您还可能希望避免使用 $_REQUEST 中的值,因为它们不可靠。如果您的脚本需要来自 POST 的数据,则从 $_POST 检索这些值。

    【讨论】:

    • 我都试过了,但没有任何区别,是的,我添加了它,但它也没有任何区别。
    • 好的。然后让 send.php 在开始时执行“die(var_export($_POST,TRUE))”。那么通过 XHR 发送数据的结果是什么?
    • @goreSplatter,你能解释一下吗?我把 die(var_export($_POST,TRUE));就在 send_mysql.php 的开头,即在数据库连接之后。 “通过 XHR 发送数据”是什么意思?
    • @ goreSplatter,好的,我不知道出了什么问题,但它最终开始工作了,虽然我之前尝试过这种方式,但我删除了 json 编码/解码并将其作为字符串发送。 thanX 为您的 '&' 更正,因为这也是一个问题。
    • XHR 是 XMLHttpRequest 对象。在onreadystatechange 中,您可以检查脚本的响应。 var_export 的输出可能已经被捕获,可以为您提供更多线索。无论如何...感谢您接受并快乐编码。
    猜你喜欢
    • 2013-04-06
    • 2012-04-05
    • 1970-01-01
    • 2018-03-21
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多