mysql php脚本只能在第一次使用

菲尔·彭尼

我有一个脚本可将公司和类别添加到数据库中,但是它只能在第一次使用。当我尝试添加第二家公司时,在通过所有其他错误检查之后,它在最终错误检查上失败。类别已成功添加到类别表,但是公司及其详细信息未添加到company表。

这可能是代码错误还是数据库构造错误?

这是最终的错误检查和mysql查询:

if (empty($errors)) { // If everything's OK.

    // Add the company to the database:
    $q = 'INSERT INTO companies (category_id, company_name, phone, email, website, address_1, address_2, address_3, postcode, description, image_name) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)';
    $stmt = mysqli_prepare($dbc, $q);
    mysqli_stmt_bind_param($stmt, 'issssssssss', $catid, $cn, $p, $e, $w, $a1, $a2, $a3, $pc, $d, $i);
    mysqli_stmt_execute($stmt);

    // Check the results...
    if (mysqli_stmt_affected_rows($stmt) == 1) {

        // Print a message:
        echo '<p>The company has been added.</p>';

        // Rename the image:
        $id = mysqli_stmt_insert_id($stmt); // Get the company ID.
        rename ($temp, "../../../uploads/$id");

        // Clear $_POST:
        $_POST = array();

    } else { // Error!
        echo '<p style="font-weight: bold; color: #C00">Your submission could not be processed due to a system error.</p>'; 
    }

    mysqli_stmt_close($stmt);

} // End of $errors IF.

这是完整的代码:

<?php
require_once ('../../../mysqli_connect.php');

if (isset($_POST['submitted'])) { // Handle the form.

// Validate the incoming data...
$errors = array();

// Check for a company name:
if (!empty($_POST['company_name'])) {
    $cn = trim($_POST['company_name']);
} else {
    $errors[] = 'Please enter the company\'s name!';
}

// Check for an image:
if (is_uploaded_file ($_FILES['image']['tmp_name'])) {

    // Create a temporary file name:
    $temp = '../../../uploads/' . md5($_FILES['image']['name']);

    // Move the file over:
    if (move_uploaded_file($_FILES['image']['tmp_name'], $temp)) {

        echo '<p>The file has been uploaded!</p>';

        // Set the $i variable to the image's name:
        $i = $_FILES['image']['name'];

    } else { // Couldn't move the file over.
        $errors[] = 'The file could not be moved.';
        $temp = $_FILES['image']['tmp_name'];
    }

} else { // No uploaded file.
    $errors[] = 'No file was uploaded.';
    $temp = NULL;
}

// Validate the category...
if (isset($_POST['category']) && ($_POST['category'] == 'new') ) {
    // If it's a new category, add the category to the database...

    // Check for a category name...
    if (!empty($_POST['category_name'])) {

        $catn = trim($_POST['category_name']);

        // Add the category to the database:
        $q = 'INSERT INTO categories (category_name) VALUES (?)';
        $stmt = mysqli_prepare($dbc, $q);
        mysqli_stmt_bind_param($stmt, 's', $catn);
        mysqli_stmt_execute($stmt);

        // Check the results....
        if (mysqli_stmt_affected_rows($stmt) == 1) {
            echo '<p>The category has been added.</p>';
            $catid = mysqli_stmt_insert_id($stmt); // Get the category ID.
        } else { // Error!
            $errors[] = 'The new category could not be added to the database!';
        }

        // Close this prepared statement:
        mysqli_stmt_close($stmt);

    } else { // No category name value.
        $errors[] = 'Please enter the category\'s name!';
    }

} elseif ( isset($_POST['category']) && ($_POST['category'] == 'existing') && ($_POST['existing'] > 0) ) { // Existing category.
    $catid = (int) $_POST['existing'];
} else { // No category selected.
    $errors[] = 'Please enter or select the category\'s name!';
}

if (empty($errors)) { // If everything's OK.

    // Add the company to the database:
    $q = 'INSERT INTO companies (category_id, company_name, image_name) VALUES (?, ?, ?)';
    $stmt = mysqli_prepare($dbc, $q);
    mysqli_stmt_bind_param($stmt, 'iss', $catid, $cn, $i);
    mysqli_stmt_execute($stmt);

    // Check the results...
    if (mysqli_stmt_affected_rows($stmt) == 1) {

        // Print a message:
        echo '<p>The company has been added.</p>';

        // Rename the image:
        $id = mysqli_stmt_insert_id($stmt); // Get the company ID.
        rename ($temp, "../../../uploads/$id");

        // Clear $_POST:
        $_POST = array();

    } else { // Error!
        echo '<p style="font-weight: bold; color: #C00">Your submission could not be processed due to a system error.</p>'; 
    }

    mysqli_stmt_close($stmt);

} // End of $errors IF.

// Delete the uploaded file if it still exists:
if ( isset($temp) && file_exists ($temp) && is_file($temp) ) {
    unlink ($temp);
}

} // End of the submission IF.

// Check for any errors and print them:
if ( !empty($errors) && is_array($errors) ) {
echo '<h1>Error!</h1>
<p style="font-weight: bold; color: #C00">The following error(s) occurred:<br />';
foreach ($errors as $msg) {
    echo " - $msg<br />\n";
}
echo 'Please reselect the company image and try again.</p>';
}

// Display the form...
?>
菲尔·彭尼

我需要将主键指定为自动增量,在这种情况下,它是company_id字段。

添加详细错误检查的一种简单方法是插入

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

在进行mysqli_connection之前。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

@keyframes动画只能在第一次使用

来自分类Dev

CSS动画只能在第一次使用

来自分类Dev

Sphinx搜索:让rt索引与mysql一起使用-第一次

来自分类Dev

第一次比赛后停止MySQL

来自分类Dev

第一次无法打开MySQL

来自分类Dev

mysql 在第一次后工作正常

来自分类Dev

部分应用的功能只能在第一次使用。

来自分类Dev

Angular无线电ng-change只能在第一次使用

来自分类Dev

关于AVFoundation:为什么我的应用程序只能在第一次使用

来自分类Dev

单击ul> li只能在第一次使用

来自分类Dev

第一次查询后,NodeJS和MySQL得到500错误

来自分类Dev

第一次无法启动MySQL服务器

来自分类Dev

第一次运行函数时,在mysql中更新了错误的数据

来自分类Dev

从mysql获取的jQuery仅在第一次有效

来自分类Dev

MySQL:返回第一次出现或按日期记录

来自分类Dev

MySQL:不包括第一次出现的总数量

来自分类Dev

vim功能只能在第一次正常运行

来自分类Dev

为什么我的循环只能在第一次迭代中正常工作?

来自分类Dev

jQuery函数只能在第一次单击时正常工作

来自分类Dev

Javascript-onchange函数只能在html select中使用一次(第一次更改后)

来自分类Dev

使功能第一次使用Tkinter单击后只能运行一次吗?

来自分类Dev

MYSQL删除重复的记录,但在数据库中保留第一次出现

来自分类Dev

使用PHP在Mysql中一次执行多个查询

来自分类Dev

如何一次动态查询一次使用php在mysql中插入多条记录?

来自分类Dev

jQuery的下降不能在第一次?

来自分类Dev

第一次使用Mockito

来自分类Dev

Laravel - 第一次使用

来自分类Dev

如何在 MySQL 的特定列中第一次出现另一个值的行中获取列的值?

来自分类Dev

第一次尝试设置测试数据库,但得到com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链接失败

Related 相关文章

  1. 1

    @keyframes动画只能在第一次使用

  2. 2

    CSS动画只能在第一次使用

  3. 3

    Sphinx搜索:让rt索引与mysql一起使用-第一次

  4. 4

    第一次比赛后停止MySQL

  5. 5

    第一次无法打开MySQL

  6. 6

    mysql 在第一次后工作正常

  7. 7

    部分应用的功能只能在第一次使用。

  8. 8

    Angular无线电ng-change只能在第一次使用

  9. 9

    关于AVFoundation:为什么我的应用程序只能在第一次使用

  10. 10

    单击ul> li只能在第一次使用

  11. 11

    第一次查询后,NodeJS和MySQL得到500错误

  12. 12

    第一次无法启动MySQL服务器

  13. 13

    第一次运行函数时,在mysql中更新了错误的数据

  14. 14

    从mysql获取的jQuery仅在第一次有效

  15. 15

    MySQL:返回第一次出现或按日期记录

  16. 16

    MySQL:不包括第一次出现的总数量

  17. 17

    vim功能只能在第一次正常运行

  18. 18

    为什么我的循环只能在第一次迭代中正常工作?

  19. 19

    jQuery函数只能在第一次单击时正常工作

  20. 20

    Javascript-onchange函数只能在html select中使用一次(第一次更改后)

  21. 21

    使功能第一次使用Tkinter单击后只能运行一次吗?

  22. 22

    MYSQL删除重复的记录,但在数据库中保留第一次出现

  23. 23

    使用PHP在Mysql中一次执行多个查询

  24. 24

    如何一次动态查询一次使用php在mysql中插入多条记录?

  25. 25

    jQuery的下降不能在第一次?

  26. 26

    第一次使用Mockito

  27. 27

    Laravel - 第一次使用

  28. 28

    如何在 MySQL 的特定列中第一次出现另一个值的行中获取列的值?

  29. 29

    第一次尝试设置测试数据库,但得到com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链接失败

热门标签

归档