PHP和html选择标记不写入DB

时间:2013-11-19 13:33:34

标签: php html

首先原谅mysql_ *的使用,我很欣赏它的折旧,但出于完全荒谬的原因,我必须将它用于这个项目。

所以我使用这个函数

从我的数据库中填充了一个下拉菜单

func.php

    function artistQuery(){
    $myData = mysql_query("SELECT * FROM artists");
    while ($record = mysql_fetch_array($myData)){
    echo '<option value="' . $record['artistID'] . '">' . $record['artistFirst'] . ' ' . $record['artistSurname'] . '</option>';
    }

它填充了下拉菜单:

newprod.php

<h1>New Product Entry:</h1>
<form action="php/addproduct.php" method="_POST">

<p>Please select the artist:</p>

<select name="artist">
<?php artistQuery();
?>
</select>
</form>

所以从我的功能中虽然显示了艺术家的名字和姓氏,但选项值实际上是艺术家ID。

然后我用

addproduct.php

<?php

    include_once 'php/dbconn.php';

    connect();


$artist = $_POST['artist'];

$query = "INSERT INTO products ('artistID') VALUES ('$artist')";

//execute query
$result = mysql_query($query) or die("Error in Query. $query. " . mysql_error());

echo "$artist";

    ?>

将artistID写入数据库,但不写入。

我假设问题出在newprod.php(中间代码块)的某处,而不是将artistID分配给“artist”的名称。

非常感谢你们的所有帮助。

编辑:遗失信件!

4 个答案:

答案 0 :(得分:1)

应该是method="POST",而不是method="_POST"

_POST无效,浏览器会将其忽略。然后,浏览器将使用GET作为方法,这是HTML表单的默认方法。

编辑:@jacouh的答案也是有效的,您必须同时执行他和我的更改才能使其正常工作。

答案 1 :(得分:1)

在addproduct.php中,试试这个:

$query = "INSERT INTO products (artistID) VALUES ('$artist')";

而不是引用的列名(坏):

$query = "INSERT INTO products ('artistID') VALUES ('$artist')";

MySQL列名既不是单引号' artistID ',也不是双引号“ artistID ”,也不是像Access中的[ artistID ]数据库。它必须是裸名 artistID 或反引用,如

`artistID`

如果列名中有空格,如

,则非常有用
`Artist Name`

答案 2 :(得分:0)

为了避免一些sql注入尝试使用mysql_escape_string

$query = "INSERT INTO products ('artistID') VALUES ('".mysql_escape_string($artist)."')";

检查$ artist是否有值,可能没有插入db,因为是null。 或者也许不是db期望的值,例如artistID是一个整数,$ artist实际上是一个字符串。

希望这能指出你正确的方向!

答案 3 :(得分:-1)

在内部选择框中你应该给出一些像这样的东西

<select name="artist">
<option value="artist"><?php artistQuery();?></option>
</select>