フォーム提出を介してmysql連想型(多対多)表にデータを挿入しようとしています。基本的には、このページを使用して、1対多の「製品」に「レッドフラグ」を関連付けます。PHP - 連想表に挿入
FORM
<?php
require 'connect-db.php';
$sql = "SELECT ID, prod_name FROM catalog";
$result = mysqli_query($mysqli, $sql);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<p><strong>Add Red Flag:</strong></p>
<form action="addRedFlag.php" method="post" id="rfForm">
<p>Description:
<br/><textarea rows="4" cols="50" name="rfDescription" form="rfForm"></textarea>
<p>Severity: <br/>
<input type="radio" name="severity" value="minor"/>Minor<br/>
<input type="radio" name="severity" value="moderate"/>Moderate<br/>
<input type="radio" name="severity" value="major"/>Major<p/>
<select name="prod_id">
<option value="">Choose a product</option>
<?php while($row = mysqli_fetch_assoc($result)){ ?>
<?php $id = $row['ID']; ?>
<?php $title = $row['prod_name']; ?>
<option value="<?php echo $id; ?>"><?php echo $title; ?></option>
<?php } ?>
</select>
<p/><input type="submit" value="Submit" name="submit" /></form><br>
<a href="captureRedFlag.php"> Reset Form </a><br>
<a href="displayRedFlag.php"> View Red Flag List</a><br>
<a href="../../index.html"> Home</a>
</body>
</html>
PHPのHANDLER
<?php
// connect to the database
include("connect-db.php");
$value1 = $_POST['rfDescription'];
$value2 = $_POST['severity'];
$value3 = $_POST['prod_id'];
$sql = "INSERT INTO redFlag (description, severity) VALUES ('$value1', '$value2')";
$sql2 = "SELECT ID FROM redFlag WHERE (description = '$value1')";
$sql3 = "INSERT INTO prod_RF (cat_id, rf_id) VALUES ('$value3', '$value4')";
$result1 = mysqli_query($mysqli, $sql);
$result2 = mysqli_query($mysqli, $sql2);
if ($result1)
{
if ($result2)
{
$row = mysqli_fetch_assoc($result2);
$value4 = $row['ID'];
// echo $value4;
$result3 = mysqli_query($mysqli, $sql3);
if ($result3)
{
echo "success";
}
else {echo "Error: " . $sql . "<br>" . mysqli_error($mysqli);}
}
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($mysqli);
}
mysqli_close($mysqli);
?>
実行されると、コードが正常に完了BUT prod_RFテーブルのRF_IDの値は常にゼロです。これは、私がコメントを外すと
echo $value4;
の行が表示されるため、期待値が画面に表示されます。何らかの理由で、SQLクエリ($ sql3)への入力と同じ値($ value4)を使用しようとすると、何かが失敗します。
私はこのすべてにかなり新しいので、任意の提案ありがとう。
'$ value3 = $ _POST ['prod_id'];' $ value4 = ''; 'を定義し、 –
をチェックしてみてください...うまくいきませんでした。しかし、ありがとう! – Ben