2012-11-26 108 views
0

我有一個腳本,當有人輸入他們的電子郵件時,插入公司ID,用戶ID和交易日期時間。現在我必須添加一個下拉選擇框,允許用戶選擇他們想要的捐款數量,因此只需輸入一次他們的電子郵件地址。什麼是最好的方式去做這件事?我在想這樣的事情:使用php多次插入到mysql

$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

您在查詢中缺少一些東西+請使用PDO或mysqli而不是mysql +轉義您的用戶數據!在這種情況下,PDO準備好的聲明會很好。 –

+0

謝謝我將轉移到PDO和我的所有用戶數據在我的家庭計算機上逃脫....我只是從內存中寫這個,並不想寫所有額外的逃生部件=懶惰 – robk27

回答

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) . ")"); 
+0

謝謝你的答覆。我的所有用戶數據都逃脫了......我只是懶得寫出全部內容,但我會朝着PDO邁進。另外,你能告訴我把數組放在一起好嗎......只是好奇而已。 – robk27

+1

@ robk27因爲您可以遍歷數組並更輕鬆地執行任何字符串函數。 – Kermit

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(); 
+0

對不起,只是解決了我的語法錯誤,現在應該工作! –

+0

感謝代碼...這肯定會起作用,但我需要跟蹤每個單獨的捐贈,所以我需要爲每次捐贈單獨插入。 – robk27