将我的项目名称插入到phpmyadmin表时出错

时间:2017-11-09 05:24:05

标签: php

所以我想将我的商品ID和我的商品名称一起插入到distribution_item中,它只插入商品ID而不是名称,因为数组 只要表格行中有项目,我就会使用项目[$ i],因此它获取数据并插入。     

@$recipient = $_POST['recipient'];
@$address = $_POST['address'];
@$contact = $_POST['contact'];
@$date = $_POST['in_date'];
@$itemID = $_POST['id'];
@$remark = $_POST['remark'];
@$spec_remark = $_POST['spec_remark'];
$itemBalance = $_POST["count"];
$count = count($itemID);

// authentication to the database
$servername = "localhost";
$username = "root";
$password = "";
$dbName = "hopeplace";

//Create connection
$Conndb = mysqli_connect($servername, $username, $password, $dbName);

// Check connection
if (!$Conndb) {
  die("Connection failed: " . $Conndb->connect_error);
}
else {


    // select database
    mysqli_select_db($Conndb, $dbName);


    $full_name = "SELECT * FROM recipient WHERE `FULL_NAME` = '$recipient'";
    $result = mysqli_query($Conndb, $full_name);
    $rec = mysqli_fetch_array($result);
    $recipient_id = $rec['HP_ID'];

    $item_id = "SELECT ITEM_NAME FROM inventory WHERE ITEM_ID = '$itemID'";
    $result2 = mysqli_query($Conndb, $item_id);
    $rec2 = mysqli_fetch_array($result2);
    $item_name  = $rec2["ITEM_NAME"];
    $string = implode(',',$item_id);

    $sql = "SHOW TABLE STATUS WHERE `Name` = 'distribution';";
    $result = mysqli_query($Conndb, $sql);
    $data = mysqli_fetch_assoc($result);

    $DISTRIBUTION_ID = $data['Auto_increment'];

    // Add into distribution table
        $sql = "INSERT INTO distribution(DISTRIBUTION_ID,HP_ID,FULL_NAME, ADDRESS, CONTACT, DISTRIBUTION_DATE, SPEC_REMARK) VALUES ('$DISTRIBUTION_ID','$recipient_id','$recipient', '$address', '$contact', '$date', '$spec_remark')";

    if (mysqli_query($Conndb, $sql)) {
        //Add item into distribution_item table
        $item_count = 0;
        for ($i=0; $i<$count; $i++){
            $sql = "INSERT INTO distribution_item (DISTRIBUTION_ID, ITEM_ID,ITEM_NAME,OUT_QUANTITY,REMARK) VALUES ('$DISTRIBUTION_ID', '$itemID[$i]','$string[$i]','$itemBalance[$i]', '$remark[$i]')";

            if (mysqli_query($Conndb, $sql)){

                $out = "UPDATE inventory set QUANTITY = QUANTITY - '$itemBalance[$i]' where ITEM_ID= '$itemID[$i]'";
                mysqli_query($Conndb, $out);
                //echo "<p>Item $itemID[$i] has been added to $DISTRIBUTION_ID</p>";
                $item_count++;
            } else {
                echo "Error: $sql <br />" . mysqli_error($Conndb);
            }
        }

        if ($item_count == $count){
            echo "<div>
            <script>
                    window.alert('Record added successfully!');

            </script>
            </div>";
        }
    } else {
        echo "Error: $sql <br />" . mysqli_error($Conndb);
    }



}
   mysqli_close($Conndb);

&GT;

它会弹出这样的错误

注意:第55行的C:\ xampp \ htdocs \ hopeplace \ distribution \ add_distribution.php中的数组到字符串转换

警告:implode():在第56行的C:\ xampp \ htdocs \ hopeplace \ distribution \ add_distribution.php中传递的参数无效

似乎我必须将我的数组转换为字符串,以便我可以将值传递给表。我的数据库表是这样的

DISTRIBUTION_ID | ITEM_NAME | ITEM_NAME |

    1                       1                     APPLE
    1                       2                     ORANGE

1 个答案:

答案 0 :(得分:0)

此处的问题是找不到$string[$i],因为不存在$string数组,因为$string = implode(', ',$item_id)仅在$item_id是数组时才有效。

在问题中,$item_id = "SELECT ITEM_NAME FROM inventory WHERE ITEM_ID = '$itemID'";$item_id作为字符串。这就是警告错误表明内爆功能无法工作的原因。通知错误显示您无法从$string变量获取数组元素,这是因为该变量不是数组。

要将$string作为数组,您必须更正以下代码:

 $item_id = "SELECT ITEM_NAME FROM inventory WHERE ITEM_ID = '$itemID'";
    $result2 = mysqli_query($Conndb, $item_id);
    $rec2 = mysqli_fetch_array($result2);
    $item_name  = $rec2["ITEM_NAME"];
    $string = implode(',',$item_id);

例如,上面的代码可以更改为以下内容:

$string = [];
$item_id = "SELECT ITEM_NAME FROM inventory WHERE ITEM_ID = '$itemID'";
$result2 = mysqli_query($Conndb, $item_id);
while($rec2 = mysqli_fetch_array($result2){
$string[] = $rec2["ITEM_NAME"];
}

然后在用于插入项目名称的sql查询中,首先将计数变量定义为$count = count($string);