#php #mysql #insert #sql-insert
#php #mysql #вставить #sql-вставка
Вопрос:
Я пытаюсь вставить некоторые записи в свою базу данных из таблицы, созданной в цикле PHP.
Вот код, который я использую:
<?php
$action = isset($_GET['action']) ? $_GET['action'] : "";
if($action=='removed'){
echo "<div>" . $_GET['name'] . " was removed from cart.</div>";
}
if(isset($_SESSION['cart']) amp;amp; !empty($_SESSION['cart'])){
$ids = "";
foreach($_SESSION['cart'] as $k=>$id){ $ids = $ids . $id . ","; }
// remove the last comma
$ids = rtrim($ids, ',');
$query = "SELECT events.*, agegroup.*, eventtypes.* FROM events LEFT JOIN agegroup ON events.AgeGroupID=agegroup.AgeGroupID LEFT JOIN eventtypes ON events.EventTypeID=eventtypes.EventTypeID WHERE events.EventID IN ({$ids})";
$stmt = mysql_query($query);
$num = mysql_num_rows($stmt);
if($num>0){
echo "<table border='0'>";//start table
// our table heading
echo "<tr>";
echo "<th>Product Name</th>";
echo "<th>Price (GBP)</th>";
echo "<th>Action</th>";
echo "<th>Add Swimmer</th>";
echo "<th></th>";
echo "</tr>";
//also compute for total price
$totalPrice = 0;
while ($row = mysql_fetch_assoc($stmt)){
extract($row);
$totalPrice = $EventCost;
//creating new table row per record
echo "<tr>";
echo "<form action='cart.php' method='POST' name='addswimmerform'>";
echo "<td>{$EventType}</td>";
echo "<td>{$EventCost}</td>";
echo "<td>";
echo "<a href='removeFromCart.php?id={$EventID}amp;name={$EventType}'>";
echo "Remove";
echo "</a>";
echo "</td>";
echo "<td>Swimmer Drop Down</td>";
echo "<td>
<input name='EventID' type='text' id='EventID' value='{$EventID}'>
<input name='ParentDiaryID' type='text' id='ParentDiaryID' value='{$ParentDiaryID}'>
<input name='UserID' type='text' id='UserID' value='{$UserID}'>
<input name='addswimmer' type='submit' id='addswimmer' title='Add Swimmer'>
<input type='hidden' name='MM_insert' value='addswimmerdetails'>
</td>";
echo "</form>";
echo "</tr>";
}
echo "<tr>";
echo "<th>Total Price</th>";
echo "<th>{$totalPrice}</th>";
echo "<th></th>";
echo "</tr>";
echo "</table>";
echo "<br /><div><a href='#' class='customButton'>Checkout</a></div>";
}else{
echo "<div>No products found in your cart. :(</div>";
}
}else{
echo "<div>No products in cart yet.</div>";
}
?>
и вот мой код ВСТАВКИ дальше по странице:
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_POST["MM_insert"])) amp;amp; ($_POST["MM_insert"] == "addswimmerdetails")) {
$insertSQL = sprintf("INSERT INTO eventregistrations (ParentDiaryID, EventID, SwimmerID, UserID) VALUES (%s, %s, %s, %s)",
GetSQLValueString($_POST['$ParentDiaryID'], "int"),
GetSQLValueString($_POST['$EventID'], "int"),
GetSQLValueString($_POST['$SwimmerID'], "int"),
GetSQLValueString($_POST['$UserID'], "int"));
mysql_select_db($database_otters, $otters);
$Result1 = mysql_query($insertSQL, $otters) or die(mysql_error());
}
Итак, форма на странице отображает правильные значения в текстовых полях EventID и ParentDiaryID на странице, но когда я нажимаю кнопку, чтобы вставить значения, я получаю сообщение о том, что ParentDiaryID не может быть пустым.
Если я изменю форму на GET вместо POST, я смогу увидеть значения, заполняемые в URL, поэтому я знаю, что форма передает их, поэтому я предполагаю, что это проблема с моим оператором INSERT, но я не могу понять, что.
Любая помощь будет оценена.
Спасибо, Дэйв
Комментарии:
1. Когда вы пытаетесь
echo $insertSQL
, есть ли ожидаемые вами значения?2. Вы уверены, что это
$_POST['$ParentDiaryID']
и не$_POST['ParentDiaryID']
без$
?3. Боже мой, я иногда бываю таким глупым. Да, я удалил $, так что теперь это $_POST[‘ParentDiaryID’], как было предложено, и теперь он вставляет вообще никаких проблем. Спасибо
4. Не забудьте закрыть / удалить / ответить на свой собственный вопрос, чтобы он не загромождал индекс 🙂
Ответ №1:
Основная ошибка новичка, исправлена путем удаления $ .