<?php // 连接数据库 $conn = mysqli_connect("localhost", "tms", "123456", "nut"); // 检查连接是否成功 if (!$conn) { die("数据库连接失败: " . mysqli_connect_error()); } // 处理表单提交 if ($_SERVER["REQUEST_METHOD"] == "POST") { // 获取表单数据 $aoiSteps = $_POST['aoi_step']; $defectTypes = $_POST['defect_type']; $layerCodes = $_POST['layer_code']; $types = $_POST['type']; $dpets = $_POST['dpet']; $subcodes = $_POST['subcode']; $codeDescriptions = $_POST['code_description']; $determinationRules = $_POST['determination_rule']; // 插入数据 $stmt = $conn->prepare("INSERT INTO tms (aoi_step, defect_type, layer_code, type, dpet, subcode, code_description, image1_path, image2_path, image3_path, image4_path, image5_path, determination_rule) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); if (!$stmt) { die("预处理失败: " . $conn->error); } for ($i = 0; $i < count($aoiSteps); $i++) { // 处理上传的图片 $imagePaths = []; // 存储图片路径的数组 for ($j = 1; $j <= 5; $j++) { $imageField = "image" . $j; $targetDir = "D:/phpstudy_pro/WWW/192.168.1.16/images"; // 设置上传目录的路径 $fileName = uniqid() . '_' . $_FILES[$imageField]["name"][$i]; // 根据当前循环索引获取正确的图片文件名 $targetFile = $targetDir . '/' . basename($fileName); // 将反斜杠替换为正斜杠 $targetFile = str_replace('\\', '/', $targetFile); if (isset($_FILES[$imageField]["tmp_name"][$i]) && $_FILES[$imageField]["error"][$i] == UPLOAD_ERR_OK && move_uploaded_file($_FILES[$imageField]["tmp_name"][$i], $targetFile)) { $imagePath = $targetFile; } else { $imagePath = ""; } $imagePaths[] = $imagePath; } // 绑定参数 $stmt->bind_param("sssssssssssss", $aoiSteps[$i], $defectTypes[$i], $layerCodes[$i], $types[$i], $dpets[$i], $subcodes[$i], $codeDescriptions[$i], $imagePaths[0], $imagePaths[1], $imagePaths[2], $imagePaths[3], $imagePaths[4], $determinationRules[$i]); if ($stmt->execute()) { echo "数据插入成功"; } else { echo "数据插入失败: " . $stmt->error; } } // 关闭数据库连接 mysqli_close($conn); } ?>经过修改后文字数据能够上传,图片无法正常上传
时间: 2023-08-31 18:08:24 浏览: 125
您好!根据您提供的代码,我注意到您遇到了图片无法正常上传的问题。根据代码,我发现可能有几个原因导致这个问题。
首先,请确保您的上传目录路径设置正确。您可以检查目录是否存在,并且您的 PHP 程序有权限将文件保存到该目录中。
其次,确保您的 HTML 表单中的 file input 字段是正确的,并且设置了正确的属性。例如,确保您在 file input 字段中添加了 `enctype="multipart/form-data"` 属性。
最后,确保您的 PHP 配置文件中的 `upload_max_filesize` 和 `post_max_size` 设置足够大,以允许文件上传。
如果您已经检查并确保了上述问题,但仍然无法上传图片,请提供更多关于错误消息或其他相关信息的详细信息,以便我可以更好地帮助您解决问题。
相关问题
这是我连接数据库的代码<?php function getConn() { $host = "localhost"; $user = "root"; $password = "12345678"; $database = "cwyy"; //连接数据库 $conn = mysqli_connect($host, $user, $password, $database); if ($conn->error) { die("连接数据库[$database]失败!"); } return $conn; } ?>
你的连接数据库的代码看起来没有问题,但是建议在连接数据库之前,先检查一下 `mysqli_connect` 函数是否返回了错误,以便及时发现问题。你可以尝试在连接数据库之前添加以下代码:
```
$conn = mysqli_connect($host, $user, $password, $database);
if (mysqli_connect_errno()) {
die("数据库连接失败: " . mysqli_connect_error());
}
```
这样,如果连接失败,就可以获取到详细的错误信息,方便排查问题。另外,建议将数据库连接信息存储在单独的配置文件中,避免在代码中直接暴露敏感信息。
为什么每刷新一次,数据库都会自动添加一条代码<!-- <?php include_once("functions/database.php"); // 上传数据 $category = $_POST["category"]; $category_name = htmlspecialchars(addslashes($_POST["category_name"])); $category_description = htmlspecialchars(addslashes($_POST["category_description"])); // 创建MySQLi连接 $conn = mysqli_connect("localhost", "root", "root", "news"); if (!$conn) { die("连接失败:" . mysqli_connect_error()); } $stmt = mysqli_prepare($conn, "INSERT INTO category (category_id, category_name, category_description) VALUES (?, ?, ?)"); mysqli_stmt_bind_param($stmt, 'iss', $category_id, $category_name, $category_description); $category_id = null; mysqli_stmt_execute($stmt); if (mysqli_stmt_affected_rows($stmt) > 0) { echo "该类别成功添加到数据库表中!"; } else { echo "添加类别失败,请检查输入的数据并重试。"; } mysqli_stmt_close($stmt); mysqli_close($conn); ?> --> <?php // 包括数据库连接代码 include_once("functions/database.php"); // 创建MySQLi连接 $conn = mysqli_connect("localhost", "root", "root", "news"); if (!$conn) { die("连接失败:" . mysqli_connect_error()); } // 查询 category 表中的所有数据 $query = "SELECT * FROM category"; $result = mysqli_query($conn, $query); if (!$result) { die("查询失败:" . mysqli_error($conn)); } // 显示查询结果 echo "<table>"; echo "<tr><th>category_id</th><th>category_name</th><th>category_description</th></tr>"; while ($row = mysqli_fetch_assoc($result)) { echo "<tr><td>" . $row["category_id"] . "</td><td>" . $row["category_name"] . "</td><td>" . $row["category_description"] . "</td></tr>"; } echo "</table>"; mysqli_free_result($result); mysqli_close($conn); ?>
根据你提供的代码,我猜测你可能是将整个 PHP 代码块作为注释添加到 HTML 中,而不是将其作为服务器端代码来处理。因此,每次刷新页面时,浏览器会将代码块当做注释进行忽略,而服务器则会将其解析为有效的 PHP 代码并执行,从而导致数据库中每刷新一次页面就会添加一条数据。
要解决这个问题,你需要将 PHP 代码块放到服务器端脚本文件中,而不是将其作为注释添加到 HTML 中。在服务器端,只有在调用脚本时才会执行其中的代码,而不是在每次刷新页面时都执行。
另外,为了避免数据库中添加重复的数据,你可以在添加数据前先查询数据库,确保该数据不存在。如果已经存在,则不进行添加操作。代码示例:
```php
// 包括数据库连接代码
include_once("functions/database.php");
// 检查表单是否提交
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// 上传数据
$category = $_POST["category"];
$category_name = htmlspecialchars(addslashes($_POST["category_name"]));
$category_description = htmlspecialchars(addslashes($_POST["category_description"]));
// 创建MySQLi连接
$conn = mysqli_connect("localhost", "root", "root", "news");
if (!$conn) {
die("连接失败:" . mysqli_connect_error());
}
// 检查数据是否已存在
$stmt = mysqli_prepare($conn, "SELECT * FROM category WHERE category_name = ?");
mysqli_stmt_bind_param($stmt, 's', $category_name);
mysqli_stmt_execute($stmt);
mysqli_stmt_store_result($stmt);
if (mysqli_stmt_num_rows($stmt) > 0) {
// 数据已存在,不进行添加操作
echo "该类别已存在!";
} else {
// 数据不存在,进行添加操作
$stmt = mysqli_prepare($conn, "INSERT INTO category (category_id, category_name, category_description) VALUES (?, ?, ?)");
mysqli_stmt_bind_param($stmt, 'iss', $category_id, $category_name, $category_description);
$category_id = null;
mysqli_stmt_execute($stmt);
if (mysqli_stmt_affected_rows($stmt) > 0) {
echo "该类别成功添加到数据库表中!";
} else {
echo "添加类别失败,请检查输入的数据并重试。";
}
}
mysqli_stmt_close($stmt);
mysqli_close($conn);
}
// 创建MySQLi连接
$conn = mysqli_connect("localhost", "root", "root", "news");
if (!$conn) {
die("连接失败:" . mysqli_connect_error());
}
// 查询 category 表中的所有数据
$query = "SELECT * FROM category";
$result = mysqli_query($conn, $query);
if (!$result) {
die("查询失败:" . mysqli_error($conn));
}
// 显示查询结果
echo "<table>";
echo "<tr><th>category_id</th><th>category_name</th><th>category_description</th></tr>";
while ($row = mysqli_fetch_assoc($result)) {
echo "<tr><td>" . $row["category_id"] . "</td><td>" . $row["category_name"] . "</td><td>" . $row["category_description"] . "</td></tr>";
}
echo "</table>";
mysqli_free_result($result);
mysqli_close($conn);
```
注意,这里只是一个示例代码,具体的实现方式可能会因实际场景而有所不同,需要根据具体情况进行修改和优化。
阅读全文