【问题标题】:How to send an array to a PHP file so the values can be added to mySQL using HTTP request?如何将数组发送到 PHP 文件,以便可以使用 HTTP 请求将值添加到 mySQL?
【发布时间】:2014-11-05 10:55:11
【问题描述】:

将 javaScript 数组发送到 PHP 文件,然后将元素存储在 mySQL 数据库中。

目前,我的“httpSend.responseText”警报出现错误。说注意:未定义的索引:名称在..第8行

注意:未定义的索引:第 9 行 .. 中的地址

警告:mysqli_query() 期望参数 1 为 mysqli,资源在第 12 行的 .. 中给出

我不确定阵列是正确发送还是被正确接收。

var name = "John";
var address = "UK";

var sendInfo = {
    Name: name,
    Address: address
};

var httpSend = new XMLHttpRequest();
var php = "http://server/~name/folder/insertOffer.php";
httpSend.open("POST", php, true);

httpSend.onreadystatechange = function() {//Call a function when the state changes.
    if(httpSend.readyState == 4 && httpSend.status == 200) {
        alert(httpSend.responseText);
    }
}

httpSend.send(sendInfo);

PHP

 <?php

 include("mysqlconnect.php");


 $name = $_POST['name']; 
 $address = $_POST['address'];


 mysqli_query($connection,"INSERT INTO offerSelected (Id, Url) VALUES ('$name', '$address')");
  ?>

mysqlconnect 是这样的

<?php
$connection = mysql_connect("localhost", "user", "pass");

if(!$connection){
die('Could not connect to server: ' . mysql_error());
}

mysql_select_db("database", $connection);
?>

【问题讨论】:

  • 试试$name = $_POST['name'];$address = $_POST['address'];(注意大写字母)
  • PHP 变量区分大小写。将$Name 更改为$name$Address 更改为$address 或其他方式。
  • 我仍然得到未定义的名称和地址索引,并且我期望参数 1 是 mysqli
  • 你为什么使用单引号来包装变量 '$name' 和 '$address' 可能你可以使用像这样的连接:“INSERT INTO offerSelected (Id, Url) VALUES ('".$name ."', '".$address."')"

标签: javascript php mysql arrays xmlhttprequest


【解决方案1】:

试试这个:

var name = "John";
var address = "UK";

var sendInfo = {
    Name: name,
    Address: address
};

var params = "sendInfo=" + JSON.stringify(sendInfo);

var httpSend = new XMLHttpRequest();
var php = "http://server/~name/folder/insertOffer.php";
httpSend.open("POST", php, true);

httpSend.onreadystatechange = function() {//Call a function when the state changes.
    if(httpSend.readyState == 4 && httpSend.status == 200) {
        alert(httpSend.responseText);
    }
}

httpSend.send(params);

PHP 代码:

<?php

 include("mysqlconnect.php");

 $sendInfo = json_decode($_POST['sendInfo']);

 $name = $sendInfo ['name']; 
 $address = $sendInfo ['address'];


 mysqli_query($connection,"INSERT INTO offerSelected (Id, Url) VALUES ('$name', '$address')");
  ?>

【讨论】:

  • @MichaelO'Neill 就参数 1 而言,这与创建 $connection 的方式有关,我假设它位于 mysqlconnect.php 中。快速搜索表明,这通常是因为连接是使用 mysql 而不是 mysqli 函数进行的。 For example this
【解决方案2】:

为什么要使用单引号来包装变量 '$name' 和 '$address' 将您的代码更改为这可能会对您有所帮助:

<?php

 include("mysqlconnect.php");


 $name = $_POST['name']; 
 $address = $_POST['address'];


 mysqli_query($connection,"INSERT INTO offerSelected (Id, Url) VALUES ('".$name."', '".$address."')");
  ?>

【讨论】:

    【解决方案3】:

    试试这个:

    <?php
    
        include("mysqlconnect.php");
    
        $name = $_POST['Name']; // NOTE THE CASE CHANGE HERE AS THIS IS WHATS DEFINED IN YOUR JS
        $address = $_POST['Address'];
    
        mysqli_query($connection,"INSERT INTO offerSelected (Id, Url) VALUES ('".$name."','".$address."')");
    
    ?>
    

    $connection 是在哪里定义的?

    【讨论】:

    • 我添加了 mysqlconnect 的样子。这是保持连接的地方。名称和地址仍然是未定义的索引
    猜你喜欢
    • 2014-11-05
    • 1970-01-01
    • 2019-09-12
    • 2022-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多