所以我想将我的商品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中传递的参数无效
似乎我必须将我的数组转换为字符串,以便我可以将值传递给表。我的数据库表是这样的
1 1 APPLE
1 2 ORANGE
答案 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)
;