2014-10-28 73 views
0

所以我有這個關鍵的贈品腳本,現在我想要顯示的鍵從數據庫中刪除。我如何在我寫的代碼中工作?刪除從數據庫中顯示的密鑰在PHP

so $ key是將發送給您並顯示在瀏覽器中的密鑰,但是我希望此密鑰在發送並顯示後從數據庫中刪除,因此無法再次顯示給另一個人用戶。

<?php 
//fill in mail 

echo " 
<form method='post' action=" . $_SERVER['PHP_SELF'] . "> 
    Email: <input name='email'></input><br> 
    <input type='submit' value='Get your key' name='submit'> </input><br><br> 
</form>"; 

    if(empty($_POST["email"])) 
    { 
     echo "Please enter an email adress."; 
    } 
    else{ 
     // get key from database 
     $key = dispres(); 

     //mail key to input mail 
     $to  = $_POST["email"]; 
     $subject = 'Your test key'; 
     $message = 'Your key is: ' . $key; 
     $headers = 'There you go!'; 

     mail($to, $subject, $message, $headers); 

     echo "Your code has been sent to your email: " . $_POST["email"] . " \r"; 
     echo $key; 
    } 



function dispres(){ 

//database connect 
$db_host = 'localhost'; 
$db_user = 'root'; 
$db_pwd = 'pwd'; 

$database = 'c3keys'; 
$table = 'test'; 

if (!mysql_connect($db_host, $db_user, $db_pwd)) 
    die("Can't connect to database"); 

if (!mysql_select_db($database)) 
    die("Can't select database"); 


//grab random key from database 

$result = mysql_query("SELECT * FROM {$table} order by RAND() LIMIT 1"); 

$row = mysql_fetch_row($result); 

$result = implode('|',$row); 



return $result; 

//delete key from database 


//had this as a begin 
mysqli_query("DELETE FROM test WHERE test='$key'"); 

//remember ip adress for 1 use only 
} 

?> 
+2

1-你使用的是mysql和mysqli兩個棍子...... 2-你的刪除查詢在'return'之後,所以它永遠不會運行。 3-什麼是$ key?我沒有看到你設置的位置。 4-停止使用'mysql_ *'這些函數已被棄用。在準備好的語句中使用'mysqli'或'PDO'。 – CodeBird 2014-10-28 10:41:24

+0

我是新來的PHP和目前的學習。所以我並不是真正意義上的。 – kaaai3 2014-10-28 10:45:30

+0

@CodeBird我會把所有這些放在OP的一個很好的答案中,特別是在返回後的刪除查詢。 – 2014-10-28 12:57:58

回答

1

1-您同時使用mysql和mysqli的堅持使用一個...

2 - 你刪除查詢是迴歸後,使之永遠運行。

3-什麼是$鍵?我沒有看到你設置的位置。

4-停止使用mysql_ *這些函數已被棄用。使用mysqli或PDO與準備好的語句。

說明點1:

在您的代碼在你dispres功能的開始,你有mysql_connect,在年底爲您刪除查詢mysql_select_dbmysql_query您使用mysqli_query通知i在過去的功能,你可以在這裏使用mysqli,就像你用mysql適配器連接一樣。

說明2點:

你有return $result;那麼之後你需要mysqli_query("...");當他們看到一個return這意味着功能做PHP將不會執行該代碼行,因爲PHP和其他編程語言,無事可做,所以你不能擁有你想要的return

說明3點後執行任何行:

在你的整個dispres功能沒有$key所以基本上$key是空的,我想你的意思是在該查詢中使用$result。即使您使用$result,您的刪除也不會起作用,因爲$result是一個字符串,您將所有字段加入其中,並在每個字段與另一個字段之間添加了|管道符號。所以第test列不會等於您的$結果。您應該由測試列的實際值替換$關鍵要刪除,也許是這樣的:

$row = mysql_fetch_row($result); 
$test_i_want_to_delete=$row[0];//Where 0 is the number of column of `test` in your db table, starting counting from 0 
$result = implode('|',$row); 
mysql_query("DELETE FROM test WHERE test='$test_i_want_to_delete'"); 

說明點4:

如果你剛開始學習PHP它會更好因爲你不學習任何在以後的版本中完全刪除的棄用函數。所以在使用mysql_*功能的地方,看看PDOmysqli,尤其是看看如何使用預處理語句。

我希望我的回答有助於清除一些東西。