我有一个非常大的矩阵1328x1328,我试图将它的上三角形(它是对称的)存储到数据库中作为LONGTEXT。
在JavaScript中我将它序列化:JSON.stringify(matrix)
(序列化字符串长度为16744056个字符)并使用ajax将其发送到服务器:
$.ajax({
type: "PUT",
url: 'post-user-matrix.php',
data: JSON.stringify(matrix),
contentType: "application/json"
});
它没有任何问题到达PHP,但从那里我想将它保存到数据库表
u_id(INT) | matrix_json (LONGTEXT)
应该将数据发送到数据库的PHP脚本如下所示:
$user_id = getUserID();
$matrix = file_get_contents("php://input");
if ($insert_stmt = $mysqli->prepare("INSERT INTO users_matrix (u_id, matrix_json) VALUES (?,?)")) {
$null = NULL;
$insert_stmt->bind_param('is',$user_id, $null);
$matrixchunks = str_split($matrix, 8192);
for ($i=0 ; $i < count($matrixchunks) ; $i++) {
$insert_stmt->send_long_data(1, $matrixchunks[$i] );
}
$insert_stmt->execute();
}
我尝试使用依赖于PHP文档的send_long_data,但脚本没有错误,也没有向数据库发送任何内容。
答案 0 :(得分:0)
我认为问题出在旗帜上 - 必须是ib,而不是
$insert_stmt->bind_param('ib',$user_id, $null);
可以在php文档示例中看到:http://php.net/manual/en/mysqli-stmt.send-long-data.php