如何在PHP中获取JSON数组并打印其值?
实际上,我已经创建了一个包含表行值的数组,我想使用jQuery将该数组传递给PHP文件,并将其存储在MySql数据库中 我所做的工作如下:如何在PHP中获取JSON数组并打印其值?,php,jquery,mysql,arrays,json,Php,Jquery,Mysql,Arrays,Json,实际上,我已经创建了一个包含表行值的数组,我想使用jQuery将该数组传递给PHP文件,并将其存储在MySql数据库中 我所做的工作如下: var myTableArray = []; $("table#tbl-nitem tr").each(function() { var arrayOfThisRow = []; var tableData = $(this).find('td'); if (tableData.length > 0) { ta
var myTableArray = [];
$("table#tbl-nitem tr").each(function() {
var arrayOfThisRow = [];
var tableData = $(this).find('td');
if (tableData.length > 0) {
tableData.each(function() {
arrayOfThisRow.push($(this).text());
});
alert(arrayOfThisRow);
arrayOfThisRow.shift();
myTableArray.push(arrayOfThisRow);
}
});
//myTableArray.shift();
alert(myTableArray);
var jsonString = JSON.stringify(myTableArray);
$.ajax({
type: "GET",
url: "script_expenses.php",
data: {
data: jsonString
},
cache: false,
success: function(response) {
if (response == "ok") {
alert("OK");
} else {
alert(response);
}
}
});
上面的代码将创建、存储数组并将其传递到.php文件
$conn = require_once 'db_connection.php';
//echo $conn;
session_start();
$data = $_GET['data'];
json_encode($data);
// $sql = "INSERT INTO my_table ( fname, lname ) VALUES ( ?,? )";
//$ins =
$sql = "INSERT INTO expenses_list VALUES (?, ?, ?, ?, ?, ?)";
$stmt = mysqli_prepare($conn, $sql);
foreach($data as $row) {
mysqli_stmt_bind_param('ss', 'TEA');
mysqli_stmt_bind_param('ss', $row['Purpose']);
mysqli_stmt_bind_param('ss', $row['UnitPrice']);
mysqli_stmt_bind_param('ss', $row['Qty']);
mysqli_stmt_bind_param('ss', $row['DTime']);
mysqli_stmt_bind_param('ss', $row['Description']);
$result = mysqli_stmt_execute($stmt);
}
flush();
上面的代码将接收数组并尝试存储在数据库中。
但我在foreach语句中得到一个错误,如下所示:
为每个人提供的参数无效
我搜索并了解到接收值不是数组。
如何解决这个问题?就这么办吧
$data = $_GET['data'];
$data = json_decode($data,true);
现在可以在foreach循环中使用$data
更新1
$conn = require_once'db_connection.php';
session_start();
$data = $_GET['data'];
$data = json_decode($data,true);
$sql = "INSERT INTO expenses_list VALUES (?, ?, ?, ?, ?, ?)";
$stmt = mysqli_prepare($conn,$sql);
foreach($data as $row){
mysqli_stmt_bind_param('s', 'TEA');
mysqli_stmt_bind_param('s', $row['Purpose']);
//mysqli_stmt_bind_param('s', $row['UnitPrice']);
//if UnitPrice is double values then use
mysqli_stmt_bind_param('d', $row['UnitPrice']);
//mysqli_stmt_bind_param('s', $row['Qty']);
//if Qty is integer then use
mysqli_stmt_bind_param('i', $row['Qty']);
mysqli_stmt_bind_param('s', $row['DTime']);
mysqli_stmt_bind_param('s', $row['Description']);
$result = mysqli_stmt_execute($stmt);
}
在mysqli_stmt_bind_参数中,请使用以下类型
i对应变量的类型为integer
d对应变量的类型为double
s对应的变量具有类型字符串
b对应的变量是blob,将以数据包的形式发送
有关更多参考信息,请检查此项
$data = $_GET['data'];
$data = json_decode($data,true);
现在可以在foreach循环中使用$data
更新1
$conn = require_once'db_connection.php';
session_start();
$data = $_GET['data'];
$data = json_decode($data,true);
$sql = "INSERT INTO expenses_list VALUES (?, ?, ?, ?, ?, ?)";
$stmt = mysqli_prepare($conn,$sql);
foreach($data as $row){
mysqli_stmt_bind_param('s', 'TEA');
mysqli_stmt_bind_param('s', $row['Purpose']);
//mysqli_stmt_bind_param('s', $row['UnitPrice']);
//if UnitPrice is double values then use
mysqli_stmt_bind_param('d', $row['UnitPrice']);
//mysqli_stmt_bind_param('s', $row['Qty']);
//if Qty is integer then use
mysqli_stmt_bind_param('i', $row['Qty']);
mysqli_stmt_bind_param('s', $row['DTime']);
mysqli_stmt_bind_param('s', $row['Description']);
$result = mysqli_stmt_execute($stmt);
}
在mysqli_stmt_bind_参数中,请使用以下类型
i对应变量的类型为integer
d对应变量的类型为double
s对应的变量具有类型字符串
b对应的变量是blob,将以数据包的形式发送
有关更多参考信息,请检查此使用json\u decode()设置第二个参数true如果为true,返回的对象将转换为关联数组
$data = json_decode($_GET['data'],true);
注意:阅读文档您的代码有很多错误
1) 变量的数量和字符串类型的长度必须与语句中的参数匹配。您为每个变量设置doubless
mysqli_stmt_bind_param('s', $row['Purpose']); //remove one s because your binding one variable only
2) 将变量绑定到准备好的语句,作为参数不接受字符串
$tea='tea';
mysqli_stmt_bind_param('s',$tea)代码>
变量应通过引用传递给绑定参数。不接受字符串
3) mysqli_stmt_bind_参数的第一个参数是$stmt。你错过了。加上它
4) (?)问号的数量与数字绑定变量匹配,否则将给出错误
(五)
更新1:
$tea ='TEA';
foreach($data as $row){
mysqli_stmt_bind_param($stmt,'s', $tea); // s denotes corresponding variable has type string
mysqli_stmt_bind_param($stmt,'s', $row['Purpose']);
mysqli_stmt_bind_param($stmt,'s', $row['UnitPrice']);
mysqli_stmt_bind_param($stmt,'s', $row['Qty']);
mysqli_stmt_bind_param($stmt,'s', $row['DTime']);
mysqli_stmt_bind_param($stmt,'s', $row['Description']);
$result = mysqli_stmt_execute($stmt);
}
使用json_decode()设置第二个参数true如果为true,返回的对象将转换为关联数组
$data = json_decode($_GET['data'],true);
注意:阅读文档您的代码有很多错误
1) 变量的数量和字符串类型的长度必须与语句中的参数匹配。您为每个变量设置doubless
mysqli_stmt_bind_param('s', $row['Purpose']); //remove one s because your binding one variable only
2) 将变量绑定到准备好的语句,作为参数不接受字符串
$tea='tea';
mysqli_stmt_bind_param('s',$tea)代码>
变量应通过引用传递给绑定参数。不接受字符串
3) mysqli_stmt_bind_参数的第一个参数是$stmt。你错过了。加上它
4) (?)问号的数量与数字绑定变量匹配,否则将给出错误
(五)
更新1:
$tea ='TEA';
foreach($data as $row){
mysqli_stmt_bind_param($stmt,'s', $tea); // s denotes corresponding variable has type string
mysqli_stmt_bind_param($stmt,'s', $row['Purpose']);
mysqli_stmt_bind_param($stmt,'s', $row['UnitPrice']);
mysqli_stmt_bind_param($stmt,'s', $row['Qty']);
mysqli_stmt_bind_param($stmt,'s', $row['DTime']);
mysqli_stmt_bind_param($stmt,'s', $row['Description']);
$result = mysqli_stmt_execute($stmt);
}
将json转换为数组。使用下面的代码
$datajson = $_GET['data'];
$dataarray = json_decode($datajson, true);
将json转换为数组。使用下面的代码
$datajson = $_GET['data'];
$dataarray = json_decode($datajson, true);
您应该使用而不是json\u encode($data)
。您应该使用$data=json\u decode($\u GET['data'])
$data=json\u decode($\u GET['data'],true);变量的数量和字符串类型的长度必须与语句中的参数相匹配。您好,这个错误现在已经解决了,但是我得到了更多的错误,因为mysqli_stmt_bind_param希望paramater 1是mysqli_stmt,您应该使用string而不是json_encode($data)
。您应该使用$data=json_decode($\u GET['data'])
$data=json\u decode($\u GET['data'],true);变量的数量和字符串类型的长度必须与语句中的参数匹配。hi,该错误现在已解决,但由于mysqli_stmt_bind_param希望paramater 1为mysqli_stmt,stringHi,我已尝试但未成功,尽管如此,错误的性质与mysqli_stmt_bind_param期望paramater 1为mysqli_stmt相同,stringyes错过传递语句。在我的更新1@JSalariaI中检查我的更新答案我也尝试过,但我得到了错误,因为mysqli_stmt_bind_param():变量的数量与准备语句中的参数数量不匹配(?)的数量问号与数字变量匹配,否则它将给出此错误。check you statement嗨,我已经尝试过了,但是没有成功,错误的性质仍然与mysqli_stmt_bind_param期望paramater 1为mysqli_stmt一样,stringyes错过了通过该语句。在我的更新1@JSalariaI中检查我的更新答案我也尝试过,但我得到了错误,因为mysqli_stmt_bind_param():变量的数量与准备语句中的参数数量不匹配(?)的数量问号与数字变量匹配,否则它将给出此错误。检查您的声明Hi,尝试过,但错误的性质与mysqli_stmt_bind_param期望参数1为mysqli_stmt,stringHey J Salaria,我认为您添加的类型不正确,请检查更新1答案您是对的,我已经通过链接更新了我的代码,但仍然得到相同的错误OKecho$\u GET['data'代码>并让我知道输出是什么,我正在添加。。。TEA,OFFICE,1,3,20/MAY/2017-14:46,傍晚,3和我得到[[“TEA”,“OFFICE”,“1”,“3”,“20/MAY/2017-14:46”,“傍晚”,“3”]]嗨,尝试过,但错误的性质与mysqli_stmt_bind_param期望paramater 1是mysqli_stmt,stringHey J Salaria,我认为您添加的类型不正确,请检查更新1答案您是正确的,我已经浏览了链接并更新了代码,但仍然收到相同的错误OKecho$\u GET['data']代码>并让我知道输出是什么,我正在添加。。。茶,办公室,2017年5月1日,3日,20日-14:46,晚上,3点,我要起床了