Как вставить данные, полученные из базы данных mysql, обратно в другую таблицу?
Всем привет,
У меня есть 2 стола. tbl_category &амп; tbl_products
Я пытаюсь извлечь значение категории из tbl-category в выпадающий список с помощью select, а затем вставить выбранное значение в столбец tbl_products category_name при отправке формы.
У меня работает выпадающий список, и я правильно извлекаю категории, однако при отправке формы ничего не вставляется в tbl_products, и на экране не отображаются сообщения об ошибках.
ДЕЙСТВИЕ HTML-ФОРМЫ
<pre><form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post" enctype='multipart/form-data'> <p> <label for="name">Product Category:</label> <?php include 'global.php'; echo '<select id="category_name" name="category_name">'; $sql = mysql_query("SELECT category_name FROM tbl_category"); while ($row = mysql_fetch_array($sql)){ echo "<option value='".$row['category_name']."'>".$row['category_name']."</option>"; } echo '</select>'; ?> <input name="submit" type="submit" class="btn-action" value="Add Product"> </form>
PHP-код
<?php include 'global.php'; // Escape user inputs for security $code = mysqli_real_escape_string($link, $_REQUEST['code']); $name = mysqli_real_escape_string($link, $_REQUEST['name']); $price = mysqli_real_escape_string($link, $_REQUEST['price']); // Attempt insert query execution if(isset($_POST['submit'])) { $category_name = $_POST['category_name']; //Process the image that is uploaded by the user $target_dir = "product/"; $target_file = $target_dir . basename($_FILES["imageUpload"]["name"]); $uploadOk = 1; $extensions_arr = array("jpg","jpeg","png","gif"); $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION,$extensions_arr); if (move_uploaded_file($_FILES["imageUpload"]["tmp_name"], $target_file)) { //echo "The file ". basename( $_FILES["imageUpload"]["name"]). " has been uploaded."; } else { echo "Issue with image";echo "</br>"; } $image=basename($_FILES["imageUpload"]["name"]); // used to store the filename in a variable $sql = "insert into tbl_product(code,category_name,name,price,image) values('".$code."','".$name."','".$category_name."','".$price."', '".$target_file."')"; if(mysqli_query($link, $sql)){ // Upload file echo "Product added successfully"; } else{ echo "" . mysqli_error($link); } } // Close connection mysqli_close($link); ?>
Что я уже пробовал:
Я попытался следовать многочисленным видео и учебникам you tube, чтобы заставить это работать, однако безуспешно.
Richard Deeming
$sql = "insert into tbl_product(code,category_name,name,price,image) values('".$code."','".$name."','".$category_name."','".$price."', '".$target_file."')";
Только не это!
Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
PHP: SQL-инъекция - руководство пользователя[^]
MadMyche
Что происходит?
Member 13126101
я получаю результаты из tbl_categorys в выпадающее окно с помощью select однако не могу отправить это значение обратно в tbl_products
$sql = "вставить в tbl_product(код,category_name,имя,цена,изображение)
значения('".$code.",'".$name.",'".$category_name.",'".$price.",'". $target_file.")";
Member 13126101
Спасибо за ваш ответ.
Что мне нужно изменить с помощью приведенного ниже, кроме использования параметризованных запросов? Спасибо
$sql = "вставить в tbl_product(код,category_name,имя,цена,изображение)
значения('".$code.",'".$name.",'".$category_name.",'".$price.",'". $target_file.")";
DerekT-P
Ваш код больше относится к загрузке файла, чем к вставке, но HTML, который вы показываете, не ссылается на загрузку файла. Мы не знаем, что там внутри. global.php (хотя нам не нужны имена пользователей и пароли в строках подключения), но поскольку вы показываете нам только часть кода, и, вероятно, неправильный код, трудно сказать. Мы также не знаем определения таблицы, поэтому не знаем, подходит ли то, что вы пытаетесь вставить.
В то же время, предлагаю вам попробовать один шаг через код в вашем отладчике, чтобы увидеть, что происходит. Если по какой-то причине вы не можете этого сделать, то установите свою конфигурацию php для отображения сообщений об ошибках, поместите операторы echo в свой код, чтобы показать, где происходит выполнение, и т. д. и т. д.; все обычные шаги отладки в основном.