【问题标题】:Undefined error when adding values to an sql table向 sql 表添加值时出现未定义错误
【发布时间】:2017-10-12 20:17:25
【问题描述】:

这是一个不同的问题,不是重复的,请不要标记为重复!

你好 :) 我正在传递从表单获得的用户输入。此表单有 1 到 7 的选项。如果用户选择 1,他们会得到一种产品,他们输入名称、价格和数量。如果他们选择两个,他们会输入两种产品的信息……依此类推……七你输入七种产品的信息

在通过数据库之前一切正常。但是,只有在所有 7 个都通过时才有效。如果您只输入一个产品信息集,它就不起作用..即使这些字段可以为“空”。

我需要一些关于 $product_1_name、$product_1_price 和 $product_1_quantity 的指导。我需要让它们传递到数据库。当没有值传递给函数时,代码会崩溃。

我可以帮忙吗?

SQL 设置代码:

CREATE TABLE productevents (
    o_id int(11) not null AUTO_INCREMENT PRIMARY KEY,
    productid int(11),
    product_1_name varchar(256),
    product_1_price int(11),
    product_1_quantity int(11),

    product_2_name varchar(256),
    product_2_price int(11),
    product_2_quantity int(11),

    product_3_name varchar(256),
    product_3_price int(11),
    product_3_quantity int(11),

    product_4_name varchar(256),
    product_4_price int(11),
    product_4_quantity int(11),


    product_5_name varchar(256),
    product_5_price int(11),
    product_5_quantity int(11),

    product_6_name varchar(256),
    product_6_price int(11),
    product_6_quantity int(11),

    product_7_name varchar(256),
    product_7_price int(11),
    product_7_quantity int(11)





);

代码:

if (isset($_POST['submit'])) {

    include_once 'dbh.inc.php';


    $a = 5;
    $productid = $a;


    $product_1_name = mysqli_real_escape_string($conn, $_POST['product_1_name']);   //uid
    $product_1_price = mysqli_real_escape_string($conn, $_POST['product_1_price']); //uid
    $product_1_quantity = mysqli_real_escape_string($conn, $_POST['product_1_quantity']);   //uid

    $product_2_name = mysqli_real_escape_string($conn, $_POST['product_2_name']);   //uid
    $product_2_price = mysqli_real_escape_string($conn, $_POST['product_2_price']); //uid
    $product_2_quantity = mysqli_real_escape_string($conn, $_POST['product_2_quantity']);   //ui3

    $product_3_name = mysqli_real_escape_string($conn, $_POST['product_3_name']);   //uid
    $product_3_price = mysqli_real_escape_string($conn, $_POST['product_3_price']); //uid
    $product_3_quantity = mysqli_real_escape_string($conn, $_POST['product_3_quantity']);   //uid

    $product_4_name = mysqli_real_escape_string($conn, $_POST['product_4_name']);   //uid
    $product_4_price = mysqli_real_escape_string($conn, $_POST['product_4_price']); //uid
    $product_4_quantity = mysqli_real_escape_string($conn, $_POST['product_4_quantity']);   //uid

    $product_5_name = mysqli_real_escape_string($conn, $_POST['product_5_name']);   //uid
    $product_5_price = mysqli_real_escape_string($conn, $_POST['product_5_price']); //uid
    $product_5_quantity = mysqli_real_escape_string($conn, $_POST['product_5_quantity']);   //uid

    $product_6_name = mysqli_real_escape_string($conn, $_POST['product_6_name']);   //uid
    $product_6_price = mysqli_real_escape_string($conn, $_POST['product_6_price']); //uid
    $product_6_quantity = mysqli_real_escape_string($conn, $_POST['product_6_quantity']);   //uid

    $product_7_name = mysqli_real_escape_string($conn, $_POST['product_7_name']);   //uid
    $product_7_price = mysqli_real_escape_string($conn, $_POST['product_7_price']); //uid
    $product_7_quantity = mysqli_real_escape_string($conn, $_POST['product_7_quantity']);   //uid



        $sql = "INSERT INTO productevents (productid, product_1_name, product_1_price, product_1_quantity, 
                            product_2_name, product_2_price, product_2_quantity, 
                            product_3_name, product_3_price, product_3_quantity, 
                            product_4_name, product_4_price, product_4_quantity, 
                            product_5_name, product_5_price, product_5_quantity, 
                            product_6_name, product_6_price, product_6_quantity, 
                            product_7_name, product_7_price, product_7_quantity) 
                            VALUES (
                            '$productid,'$product_1_name', '$product_1_price', '$product_1_quantity',
                            '$product_2_name', '$product_2_price', '$product_2_quantity', 
                            '$product_3_name', '$product_3_price', '$product_3_quantity', 
                            '$product_4_name', '$product_4_price', '$product_4_quantity',  
                            '$product_5_name', '$product_5_price', '$product_5_quantity', 
                            '$product_6_name', '$product_6_price', '$product_6_quantity', 
                            '$product_7_name', '$product_7_price', '$product_7_quantity' 

                            );";


        mysqli_query($conn, $sql);
        echo $sql;

        exit();

来自 ECHO $SQL 的错误:

Notice: Undefined index: product_3_name in test.php on line 29

Notice: Undefined index: product_3_price in test.php on line 30

Notice: Undefined index: product_3_quantity in test.php on line 31

Notice: Undefined index: product_4_name in test.php on line 33

Notice: Undefined index: product_4_price in test.php on line 34

Notice: Undefined index: product_4_quantity in test.php on line 35

Notice: Undefined index: product_5_name in test.php on line 37

Notice: Undefined index: product_5_price in test.php on line 38

Notice: Undefined index: product_5_quantity in test.php on line 39

Notice: Undefined index: product_6_name in test.php on line 41

Notice: Undefined index: product_6_price in test.php on line 42

Notice: Undefined index: product_6_quantity in test.php on line 43

Notice: Undefined index: product_7_name in test.php on line 45

Notice: Undefined index: product_7_price in test.php on line 46

Notice: Undefined index: product_7_quantity in test.php on line 47
INSERT INTO productevents (productid, product_1_name, product_1_price, product_1_quantity, product_2_name, product_2_price, product_2_quantity, product_3_name, product_3_price, product_3_quantity, product_4_name, product_4_price, product_4_quantity, product_5_name, product_5_price, product_5_quantity, product_6_name, product_6_price, product_6_quantity, product_7_name, product_7_price, product_7_quantity) VALUES ( '5','product1', '1', '1', 'product2', '2', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '' );

【问题讨论】:

  • product_3_name 等在您的 $_POST 中不存在。确保名称在您的表单中正确并且存在于您的帖子中。此外,您对 SQL 注入和引用问题持开放态度。由于您使用的是 mysqli,因此请利用 prepared statementsbind_param这将解决可能出现的任何令人讨厌的引用问题。
  • 从外观上看,您可能需要重新考虑您的数据库设计。 SQL注入也指日可待
  • @Akintunde hello :) 重新设计数据库是什么意思?以什么方式?
  • 强烈建议不要为每个产品创建一个列。如果您添加新产品,您将不得不更新您的应用程序数据库。您已经有一个 productid 列来唯一标识您的产品,因此无需为每个列添加多个列。只需一个名称、价格和数量列。

标签: php mysql sql phpmyadmin


【解决方案1】:

您应该在每个变量赋值之前添加if (isset($_POST['product_1_name'])),以检查值是否为空。

类似这样的:

$product_1_name = '';
if (isset($_POST['product_1_name'])) {
    $product_1_name = mysqli_real_escape_string($conn, $_POST['product_1_name']);
}

【讨论】:

  • 现在说'INSERT INTO'函数有错误
  • 您对所有变量都这样做了?我在示例中使用了 product_1_name 变量,但问题似乎出在 product_3, 4,5,6,7,
  • 是的,我为所有人做了这件事。 “获取通知:未定义变量:test.php 第 115 行中的 event_6_price ”(位于 INSERT INTO 函数内)。如果我只输入 1 个产品的信息,则产品 2-7 会出现此错误。
  • 我在您的 INSERT 语句中没有看到这个变量?因为看起来这个变量不存在(缺少$?)
  • 嗯我也不明白这个错误!它指的是第 113 行的 '$product_3_name'、'$product_3_price'、'$product_3_quantity'
猜你喜欢
  • 1970-01-01
  • 2018-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多