【发布时间】:2012-11-30 19:58:26
【问题描述】:
我希望有人能够帮助我解决这个问题!
我正在用 php 开发一个 Web 应用程序,我想提交我的一位同事的活动。有时该活动由多个同事完成,因此我希望能够提交该活动,但以某种方式保存所有参与该活动的同事。
我决定使用下拉菜单,即 php 中的 select 标签。 html代码如下:
<div id="placeholder">
<SELECT id="activeMember" NAME=name>
<OPTION VALUE=0>Choose
<OPTION VALUE=1>Mark
<OPTION VALUE=2>James
<OPTION VALUE=3>Emily
</SELECT>
<button type="button" name="add" onclick="Add();">+</button>
下面是javascript代码:
var _counter = 0;
function Add() {
_counter++;
var oClone = document.getElementById("activeMember").cloneNode(true);
oClone.id += (_counter + "");
document.getElementById("placeholder").appendChild(oClone);
}
你可以在这个LINK上看到它是如何工作的
按下提交按钮时,会调用另一个脚本,将活动保存在我的数据库中:
$connection = mysql_connect("$host", "$username", "$password") or die("cannot connect");
mysql_select_db("$db_name") or die("cannot select DB");
$member = $_POST['name'];
$summary = $_POST['summary];
$date = date("l F d, Y");
$query = mysql_query("INSERT INTO activities (member, activitySummary, date) VALUES ( '" . $member . "', '" . $summary . "', $date."' )");
现在我的问题来了。当我选择 Mark and James 时,如果 James 是第二个选择的人,那么只有在我提交表单后才会为他保存活动。马克一直被忽略。此外,如果选择了 Mark、James 和 Emily,则仅为 Emily 保存活动。因此,表单仅保存最后选择的同事的活动。
有没有人知道如何避免这种情况并成功为一项活动保存多个同事/成员?
【问题讨论】:
-
1) 你能详细说明一下吗?你所说的“消毒”到底是什么意思,2)你能说出为什么吗?一切似乎都正常。
-
当然。 1) 通过在查询中使用逐字输入,您很容易受到SQL injection 的攻击。为了帮助使用
mysql_库缓解这种情况,请在查询中使用mysql_real_escape_string($member)(以及其他值)。 2)mysql_扩展是旧的,不再积极开发,并且将被弃用(很快?)。 PDO 和 MySQLi 更新且功能更丰富,提供面向对象的使用和参数化查询(SQL 注入预防技术比盲串转义更好)。这是一条评论的大量信息,但希望这是一个开始。 -
忘记了 this link 的 MySQL API 比较。使用旧的
mysql_扩展本身并没有错误,但建议您使用较新的扩展,以便您的代码更加面向未来,并且您可以利用更强大的功能。跨度>
标签: php drop-down-menu multiple-value