我有一个脚本,当有人输入他们的电子邮件时,会插入公司ID,用户ID和交易的日期时间。现在我必须添加一个下拉选择框,允许用户选择他们想要的捐赠数量,这样只需要输入一次他们的电子邮件地址。最好的方法是什么?我在想这样的事情:
$coid = $row['companyid'];
$userid = $_SESSION['userid'];
$selectbox = $_POST['select']; // number value 1-10
// old query
mysql_query = ("INSERT INTO donations(company, user)");
// new query
$i=1
while($i<=$selectbox) {
mysql_query = ("INSERT INTO donations(company, user)");
$i++
}
或类似的东西。这是最好的方式吗?更好的方式?
答案 0 :(得分:0)
首先,停止使用mysql_
函数being deprecated。请改用mysqli_
或PDO
函数。
您应该使用预准备语句或清理变量以防止SQL注入。
关于更好的方法,您可以将它们放入数组中,然后在执行时内爆。 This是一个很好的起点。它使用PDO插入数组。
根据您当前的代码,我不清楚您是如何跟踪希望捐款的用户数量,但您可以执行以下操作:
$i = 1;
while($i <= $selectbox) {
$insertArray[] = "$coid, $userid";
$i++;
}
mysql_query("INSERT INTO donations (company, user) VALUES (" . implode('), (', $insertArray) . ")");
答案 1 :(得分:0)
你应该创建一个包含3列的数据库表(对于这个问题)。
我将为您提供制作所需表格的代码,只需将其复制并粘贴到PHPmyAdmin中即可:
Create Table donations(
company_id int,
user_id int,
donate_num int,
datetime DATETIME
)
然后使用INSERT INTO
函数使用新的mysqli函数更新数据库(将服务器/用户名等替换为您的数据库详细信息):
$mysqli= new mysqli('SERVER','USERNAME','PASSWORD','DATABASE NAME')
if ($mysqli->connect_error) {
die('Connect Error (' . $mysqli->connect_errno . ') '
. $mysqli->connect_error);
}
function escapeStringSlash($value) {
global $mysqli;
if (get_magic_quotes_gpc()) {
$value = stripslashes($value);
}
if (!is_numeric($value)) {
$value = $mysqli->real_escape_string($value);
}
return $value;
}
$coid=escapeStringSlash($row['companyid']);
$userid = escapeStringSlash($_SESSION['userid']);
$selectbox = escapeStringSlash($_POST['select']);
$date = new DateTime();
$currentTime = $date->format("Y-m-d H:i:s");
if($insertDonations=$mysqli->query("INSERT INTO donations(company_id,user_id,donate_num,datetime) VALUES(".$coid.",".$userid.",".$selectbox.",'".$currentTime."')"){
echo "Number of donations received";
}else{
echo "There was a problem inserting this.";
}
$mysqli->close();