【问题标题】:Issue with insert into sql query插入sql查询的问题
【发布时间】:2014-11-22 21:32:18
【问题描述】:
$.ajax({
    url: 'http://localhost/xampp/htdocs/ajax.php',

    contentType: 'application/json',
    type: 'post',
    data: {

//score 是一个新变量,count2 是一个整数变量,我想将它发送到数据库 “分数”:“count2” },

    success: function () {
        alert("ok");

    },
    error: function () {
       alert("error");
    }
});    

上面的代码提示我“ok”。

function connect(){
    $connect = mysql_connect('localhost','root','') or die("ERROR");
    $connect2Database = mysql_select_db('fypdb', $connect);
    return $connect;
}

if(isset($_POST)){

    if($connect = connect()){

        $query = "INSERT INTO fypdbtable (score) VALUES ('".$_POST['score']."');";
        $completeQuery = mysql_query($query, $connect);
    }
}

我认为问题在于“插入”查询,因为在 ajax.php 中提示我注意:未定义索引:第 14 行 C:\xampp\htdocs\xampp\htdocs\ajax.php 中的分数 where是查询行

任何帮助将不胜感激

【问题讨论】:

  • 需要停止使用mysql_ 扩展。请改用 MySQLi 或 PDO。此外,您的代码对 SQL 注入开放,请阅读 How can I prevent SQL-injection in PHP?
  • 如果你有if(isset($_POST)){,请改用if(isset($_POST['score'])){。我很怀疑这个值没有设置。
  • 它从 fyp.php 设置为 count2 并试图将它移动到 ajax.php 并从那里移动到我的数据库

标签: php mysql ajax web-development-server


【解决方案1】:

这里的问题在于您的 ajax 代码。您正在使用 contentType: 'application/json' 但您尝试访问 在您的 php 脚本中使用 $_POST 的参数,但 post 适用于表单编码的内容类型。 因此,您可以从 ajax 调用中删除 contentType,它将使用默认值
contentType:'application/x-www-form-urlencoded; charset=UTF-8'

编辑 像这样制作你的 ajax 代码:

$.ajax({
url: 'http://localhost/xampp/htdocs/ajax.php',
type: 'post',
data: {
    "score":"count2"
},

success: function () {
    alert("ok");

},
error: function () {
   alert("error");
}
});

【讨论】:

  • 感谢您的努力,但仍然没有将变量传递给 ajax.php
  • 正如我在他的 php 脚本中看到的那样,他不像 json 那样处理这个,而是像普通帖子一样,所以这就是他的“插入”不起作用的原因。
  • 你可能是对的。自从我使用 jquery ajax 以来已经有一段时间了。编辑:是的,你是。我混淆了内容类型和数据类型。从外观上看,您不应该为此设置 contentType。
  • 是的,基本上我想将javascript变量发送给已登录的玩家,我尝试了1年多,有什么问题???
  • 注意:未定义的索引:C:\xampp\htdocs\xampp\htdocs\ajax.php 中第 19 行的得分 函数 connect() 不 工作,我在里面添加了一些回声,在外面添加了一些 if 语句,但什么都没有
【解决方案2】:

“错误”消息告诉您,$_POST['score'] 未定义。但这只是一个警告。如果您想知道您的变量是否已设置,请使用 isset() 函数或在配置中关闭警告。

【讨论】:

  • 这实际上是一个通知,而不是警告,但在开发过程中保持这些通知很重要。
  • 是的,但在生产环境中你应该关闭它
  • 是的,生产环境不应报告任何内容,但应记录错误。您也不应该在生产环境的查询中使用 $_POST 变量。
猜你喜欢
  • 1970-01-01
  • 2011-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多