0

我有一个脚本,当有人输入他们的电子邮件时,它会插入公司 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++
}

或类似的规定。这是最好的方法吗?更好的方法?

4

2 回答 2

0

首先,停止使用mysql_函数,因为它们已被弃用。改用mysqli_orPDO函数。

您应该使用准备好的语句或清理变量以防止 SQL 注入。

关于更好的方法,您可以将它们放入一个数组中,然后在执行时内爆。是一个很好的起点。它使用 PDO 插入一个数组。

使用您当前的代码,我不清楚您如何跟踪希望进行捐赠的用户数量,但您可以执行以下操作:

$i = 1;
while($i <= $selectbox) {
$insertArray[] = "$coid, $userid";
$i++;
}

mysql_query("INSERT INTO donations (company, user) VALUES (" . implode('), (', $insertArray) . ")");
于 2012-11-26T20:21:18.357 回答
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();
于 2012-11-26T20:55:22.720 回答