<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$host = '10.150.150.75';
$user = 'usr';
$pass = 'teste';
$dbname = 'api';
$port = 6450;
$conn = new mysqli($host, $user, $pass, $dbname, $port);
if ($conn->connect_error) {
die("connection error: " . $conn->connect_error);
}
$conn->set_charset("utf8mb4");
$conn->query("SET SESSION sql_mode = ''");
$sql = "CREATE TABLE IF NOT EXISTS test (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100)
)";
if (!$conn->query($sql)) {
die("Error: " . $conn->error);
}
if (!$conn->query("INSERT INTO test (name) VALUES ('Teste')")) {
die("Error: " . $conn->error);
}
$last_id = $conn->insert_id; // Pega o ID inserido
$sql_update = "UPDATE test SET name = 'Atualizado' WHERE id = $last_id";
if (!$conn->query($sql_update)) {
die("Error on UPDATE: " . $conn->error);
} else {
echo "Success!<br>";
}
while ($conn->more_results()) {
$conn->next_result();
}
$result = $conn->query("SELECT * FROM test");
if ($result) {
while ($row = $result->fetch_assoc()) {
echo "ID: " . $row['id'] . " - Nome: " . $row['name'] . "<br>";
}
} else {
die("Error: " . $conn->error);
}
if (!$conn->query("DROP TABLE IF EXISTS test")) {
die("Error: " . $conn->error);
}
$conn->close();
?>
我对使用mysqli有限制,因为这是我无法更改的旧系统。
最有可能造成此错误的原因是max_allowed_packet在您的MySQL Server上的设置太小,无法适应查询结果的大小。
$mysqli->set_opt(MYSQLI_OPT_MAX_ALLOWED_PACKET, 16777216);
如果PHP测试成功,则增加mysql conf中的max_allowed_packet值。
(我是作者,它是免费&开源的)。