试图理解$ _POST和数据库

时间:2012-07-16 14:17:36

标签: php database

这是html结构:

<select name="marke" class="marke">
<option value="1">Bosch</option></select>

<select name="modell" class="modell">
<option value="2">Nocria 14 LBC</option></select>

这是我的Php字符串(简化)

$modellz = $_POST['marke']. ' ' .$_POST['modell'];
$insertQuery = "INSERT INTO producz (model)
VALUES
('" . $modellz . "')";

我试图将<option> - 标签内的名称发布到数据库中。 但是使用这段代码我就得到了这些值。 所以当我运行这个时,我在数据库中得到1 2

但我想要Bosch Nocria 14 LBC

OBS:我需要我的jquery选择脚本的VALUE属性。

请帮忙!

4 个答案:

答案 0 :(得分:4)

该选项的value是传递给服务器的内容,如果您希望在选项中接收文本而只是完全删除value属性:

<option>Nocria 14 LBC</option>

选择时会提交实际字符串。

除此之外,请阅读有关SQL注入的信息,因为您当前的PHP代码容易受到攻击。

答案 1 :(得分:1)

make value ='Bosch'或在你的php中创建一个数组,将'1'转换为你需要的字符串。

此:

<select name="marke" class="marke">
<option value="Bosch">Bosch</option></select>

<select name="modell" class="modell">
<option value="Nocria 14 LBC">Nocria 14 LBC</option></select>

<?
Options = Array();
Options['1'] = "Bosch";
Options["2"] = "Nocria 14 LBC";
?>

并使用选项[插入]来获取实际值

还记得使用mysql_real_escape_string或string-&gt; real_escape()来保证安全性

答案 2 :(得分:1)

问题出在HTML上。每个value标记的<option>是POST请求中发送的内容。

将HTML更改为:

<select name="marke" class="marke">
<option value="Bosch">Bosch</option></select>

<select name="modell" class="modell">
<option value="Nocria 14 LBC">Nocria 14 LBC</option></select>

你会看到你想要的结果。

另外,请在保存到数据库之前验证/清理表单输入。如果您正在使用mysql函数,请尝试mysql_real_escape_string()

如果jQuery需要访问每个选项的原始ID,我建议使用两种方法之一。为每个选项添加单独的属性,例如rel:<option value="Bosch" rel="1">Bosch</option>,或保持代码不变(<option value="1">Bosch</option>)并让PHP知道ID /值组合。

实际的数据库结构可以,并且可能应该,修改为支持实际ID而不是文本值。

答案 3 :(得分:0)

那是因为您需要将选项的值设置为Bosch和Nocria。 POST将选项值存储到相应的<select>名称。 试试这个

<select name="marke" class="marke">
<option value="Bosch">Bosch</option></select>

<select name="modell" class="modell">
<option value="Nocria 14 LBC">Nocria 14 LBC</option></select>