我想将一个数组传递到一个数据库中,但是我收到了通知,并且echo无法打印出我想要的字符串。
注意:第7行的数组到字符串转换(echo $ item;)
如何捕获发送到数据库的数据?
数组由作者及其书籍发送。 e.g。
[{&#34;名称&#34;:&#34;第一册&#34;&#34;书籍&#34;:[&#34; Book1.1&#34;]},{&#34 ;名称&#34;:&#34;第二册&#34;&#34;书籍&#34;:[&#34; Book2.1&#34;&#34; Book2.2&#34;]}] < / p>
这是next.php,其中数据正在传递而未被回显。
<?php
var_dump($_POST);
$data = json_decode(stripslashes($_POST['arr']), true);
foreach($data as $item){
echo $item;
// insert to db
}
?>
警报给我发送sendToServer函数中next.php的返回数据(参见摘录)。
success: function(data) {
alert(data);
}
摘录中的完整代码:
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<style type="text/css">
<!-- #main {
max-width: 800px;
margin: 0 auto;
}
-->
</style>
</head>
<body>
<div id="main">
<h1>Add or Remove text boxes with jQuery</h1>
<div class="my-form">
<!-- <form action="next.php" method="post">-->
<button onclick="addAuthor()">Add Author</button>
<br>
<br>
<div id="addAuth"></div>
<br>
<br>
<button onclick="submit()">Submit</button>
<!-- </form>-->
</div>
<div id="result"></div>
</div>
<script type="text/javascript">
var authors = 0;
function addAuthor() {
authors++;
var str = '<br/>' + '<div id="auth' + authors + '">' + '<input type="text" name="author" id="author' + authors + '" placeholder="Author Name:"/>' + '<br/>' + '<button onclick="addMore(\'auth' + authors + '\')" >Add Book</button>' + '</div>';
$("#addAuth").append(str);
}
var count = 0;
function addMore(id) {
count++;
var str =
'<div id="bookDiv' + count + '">'
+ '<input class="' + id + '" type="text" name="book' + id + '" placeholder="Book Name"/>'
+ '<span onclick="removeDiv(\'bookDiv' + count + '\')">Remove</span>'
+ '</div>';
$("#" + id).append(str);
}
function removeDiv(id) {
$("#" + id).slideUp(function() {
$("#" + id).remove();
});
}
function submit() {
var arr = [];
for (i = 1; i <= authors; i++) {
var obj = {};
obj.name = $("#author" + i).val();
obj.books = [];
$(".auth" + i).each(function() {
var data = $(this).val();
obj.books.push(data);
});
arr.push(obj);
}
sendToServer(arr);
//$("#result").html(JSON.stringify(arr));
}
function sendToServer(data) {
$.ajax({
type: "POST",
data: {
arr: JSON.stringify(data)
},
url: "next.php",
success: function(data) {
alert(data);
}
});
}
</script>
</body>
</html>
&#13;
答案 0 :(得分:2)
这就是你的表格:
join_buffer_size
要使用foreach读取数据,您需要执行以下操作:
[
{
"name":"Book1",
"books": [
"Book1.1"
]
},{
"name":"Book2",
"books": [
"Book2.1",
"Book2.2"
]
}
]
通过这个foreach,您可以操作数据并构建INSERT语句以将数据输入到数据库。
答案 1 :(得分:2)
你得到注意:第7行的数组到字符串转换(echo $ item;),因为你打算打印数组。 你不能打印数组,而你可以做一个字符串。 要做那样的事情。
<?php
var_dump($_POST);
$data = json_decode(stripslashes($_POST['arr']), true);
for ($i=0;$i<count($data);$i++){
echo "Name: ".$data[$i]['name']. "<br/>";
echo "Books: ";
foreach($data[$i]['books'] as $book){
echo $book . " ";
}
echo "...............<br/>";
// insert to db example
$sql="INSERT INTO author(id, name) VALUES (NULL, '".$data[$i]['name']."')";
//execute query and get last insert id
//$author_id=last insert id
foreach($data[$i]['books'] as $book){
$sql="INSERT INTO author_books(id, author_id, book_name) VALUES (NULL,'$author_id', '$book')";
//execute query
}
}
?>