【发布时间】:2011-12-21 11:41:53
【问题描述】:
首先我需要一个可以轻松更新的下拉列表,因此我创建了一个名为 我在表格中列出要选择的制造商的制造商。
我终于用这段代码完成了:
<?php
// Connect to the test datbase on localhost
// That's where we created the countries table above
mysql_connect('localhost','##user##','##pass##'); mysql_select_db('wordpress');
// Query the countries table and load all of the records
// into an array.
$sql = 'select * FROM manufacturers';
$res = mysql_query($sql) or die(mysql_error());
while ($rec = mysql_fetch_assoc($res))
$manufacturers[] = $rec;
?>
<form action="select.php" method="post">
<?php
echo '<select name="dropdown">';
foreach ($manufacturers as $c)
{
if ($c['id'] == $_GET['id'])
echo "<option value=\"{$c['meta_id']}\" selected=\"selected\">{$c['meta_value']} </option>\n";
else
echo "<option value=\"{$c['meta_id']}\">{$c['meta_value']}</option>\n";
}
echo '</select>';
?>
<input type="submit" value="Submit" name="submit"/>
</form>
效果很好,我现在有一个下拉列表,从我的 数据库制造商。
现在我需要将它发送到现有的数据库调用 post_meta 以便我可以从那里永久显示用户选择。
我尝试了几个不同的选项,但我正在尝试使用以下代码将其发送到我的 post_meta 数据库。
<?php
$con = mysql_connect("localhost","##user##","##pass##");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("wordpress", $con);
$sql="INSERT INTO wp_postmeta (meta_id, post_id, meta_key, meta_value)
VALUES
('$_POST['meta_id']}','$_POST[post_id]','$_POST[meta_key]','$_POST[meta_value]')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "1 record added";
?>
这实际上插入到数据库中,但不记录任何值。
请帮我弄清楚我做错了什么。
【问题讨论】:
-
您对 SQL 注入攻击非常开放。您真的应该考虑使用 PDO 学习准备好的查询。另外,
$_POST['meta_id']之后的那个额外的括号是怎么回事?您是否尝试过print_r($_POST)以确保发布数据到达那里?