我试图让selectmultiple(下拉列表)接受多个值并将它们插入mysql数据库表中的一个字段中,但是由于某些原因,这些值没有被放入该字段中。我已经研究了几个小时了,但是没有一个问题和我的情况完全相关,因为我在mysql数据库的另一个表中动态地提取值。现在的代码是这样的,我没有收到任何错误,但是没有任何东西被放入数据库。
我试过使用这样的语句 $_GET
, foreach
, if else
, implode
,等等,但我一定是语法不对,因为似乎什么都不管用。我也试过 [ ]
括号外: name='genretype[]
以及 $genretype = mysqli_real_escape_string($dbc, $_POST['genretype[]']);
行,但当我这样做时,我会收到以下错误:
mysqli\u real\u escape\u string()期望参数2是字符串,数组给定
有人能看看这个让我知道如果你看到我做错了什么吗(为方便起见,我只提供了与我的问题直接相关的代码。我的另一个下拉列表没有选择多个,工作得很好。)
php代码的顶部:
// Check for a genre.
if (empty($_POST['genretype'])) {
$errors[] = 'You forgot to enter a genre.';
} else {
$genretype = mysqli_real_escape_string($dbc, $_POST['genretype[]']);
}
if (empty($errors)) { // If everything's OK.
// Add the movie to the database.
// Check for existing record.
$query = "SELECT id FROM dvd WHERE title='$title'";
$result = mysqli_query($dbc, $query);
if (mysqli_num_rows($result) == 0) { // if there is no such movie title
$query = "INSERT INTO dvd (title, numavail, categoryname, genretype)
VALUES ('$title', '$numavail', '$categoryname', '$genretype')";
// Make the query.
$result = mysqli_query($dbc, $query);
if ($result) { // If it ran OK.
echo "<p><b>Success! The new movie has been added.</b></p>";
echo ('<p><div style="margin-top:30px;">');
echo ('<span style="float:left;">');
echo ('<FORM METHOD="LINK" ACTION="../dvd/index.php"><INPUT TYPE="submit" VALUE="Back to DVDs" STYLE="margin:0px 15px 0px 0px;"></form></span></div></p>');
echo ('<br style="clear:both;"></br>');
exit();
} else { // If it did not run OK.
$errors[] = 'The movie could not be added due to a system error. We apologize for any inconvenience.'; // Public message.
$errors[] = mysqli_error($dbc); // MySQL error message.
}
构成代码的一部分:
<?php
$ddlquery2 = "SELECT genretype FROM genre ORDER BY genretype ASC";
$ddlresult2 = mysqli_query($dbc, $ddlquery2) or die("Bad SQL: $ddlquery");
echo 'Genre (select all that apply): <select type="text" class="dropdown" name="genretype[]" multiple="multiple" size="5">';
while($ddlrow2=mysqli_fetch_array($ddlresult2, MYSQLI_ASSOC)){
echo "<option value='".$ddlrow2['genretype']."'>" . $ddlrow2['genretype'] . "</option>";
}
echo "</select>";
?>
1条答案
按热度按时间5m1hhzi41#
我的问题没有得到任何回答,但我能够通过反复试验自己找出答案,所以我想我应该和大家分享解决问题的方法。
我只需要将代码更改为以下内容。
php代码的顶部(我在
$genretype =
删除了该行末尾“genretype”后面的括号)。新的“工作”代码:
作为代码的一部分(我更改了连接行和查询行之后的大多数行):