gpt4 book ai didi

php - 将JavaScript数组数据插入MySQL数据库的问题

转载 作者:行者123 更新时间:2023-12-01 04:03:59 26 4
gpt4 key购买 nike

您能否看一下以下代码片段,并让我知道为什么我无法将数组值插入数据库。在 Js 文件中我有:

 <script>
var arr = ["foo", "2015/11/04", "Jill", "Smith", "60"];
var serializedArr = JSON.stringify( arr );
$("#loader").on("click", function(){
var upload = $.ajax({
type: "POST",
url: "loader.php",
data: {array:serializedArr},
cache: false,
beforeSend: function() {
}
});
});

在 PHP 文件中

<?php
define ( 'DB_HOST', 'localhost' );
define ( 'DB_USER', 'root' );
define ( 'DB_PASSWORD', '' );
define ( 'DB_NAME', 'dbapp' );

//$array = json_decode($_POST['array']);
$array = $_POST['array'];
//Open a new connection to the MySQL server
$mysqli = new mysqli('DB_HOST','DB_USER','DB_PASSWORD','DB_NAME');

$arr_one = $mysqli->real_escape_string($array[0]);
$arr_two = $mysqli->real_escape_string($array[1]);
$arr_three = $mysqli->real_escape_string($array[2]);
$arr_four = $mysqli->real_escape_string($array[3]);
$arr_five = $mysqli->real_escape_string($array[4]);

if ($mysqli->connect_error) {
die('Error : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
}

//MySqli Insert Query
$insert_row = $mysqli->query("INSERT INTO `models` (name, date, nip, tip, age) VALUES($arr_one, $arr_two, $arr_three, $arr_four, $arr_five)");

if($insert_row){
print 'Success! ID of last inserted record is : ' .$mysqli->insert_id .'<br />';
}else{
die('Error : ('. $mysqli->errno .') '. $mysqli->error);
}
// close connection
$mysqli->close();
?>

我都尝试了

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

$array = $_POST['array']; 

但是我无法加载数据,甚至页面上没有错误消息?!

最佳答案

  1. 建立连接时使用定义的常量而不是字符串。
  2. 使用准备好的语句而不是在查询内传递变量。
  3. the other answer 中所述,您正在尝试访问字符串变量的索引(因为发送的数据是 JSON 字符串)。
  4. 在ajax调用中使用successerror句柄,将结果/错误输出到控制台。

因此,您需要先对收到的数据进行json_decode,然后再对其进行任何操作。

<小时/>
$array = json_decode( $_POST['array'] );
$mysqli = new mysqli( DB_HOST, DB_USER, DB_PASSWORD, DB_NAME );
<小时/>
$insert_row_stmt = $mysqli->prepare( "INSERT INTO `models` (name, date, nip, tip, age) VALUES(?, ?, ?, ?, ?)");
$insert_row_stmt->bind_param( 'ssssi',
$array[0],
$array[1],
$array[2],
$array[3],
$array[4]
);
$insert_row = $insert_row_stmt->execute();
<小时/>
var upload = $.ajax({
type: "POST",
url: "loader.php",
data: {array:serializedArr},
cache: false,
success: function(d) {
console.log(d);
}
});

关于php - 将JavaScript数组数据插入MySQL数据库的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33538831/

26 4 0
文章推荐: python - 如何连接 Qt Designer 创建的单独的 UI 文件?
文章推荐: jquery - (jquery) 我如何将这个 contains 声明转换为 "not"等效项?
文章推荐: jquery - 如何使用 jQuery 在 Bootstrap 中预选