所以我有这个关键的赠品脚本,现在我想从数据库中删除显示的键。如何在我编写的代码中使用它?
所以$ 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
}
?>
答案 0 :(得分:1)
1-你使用mysql和mysqli同时使用一个...
2-你的删除查询是在返回之后所以永远不会运行。
3-什么是$ key?我不知道你在哪里设置它。
4-停止使用mysql_ *这些函数已被弃用。将mysqli或PDO与预备语句一起使用。
解释要点1:
在您的dispres函数开头的代码中,您最后使用mysql_connect
,mysql_select_db
和mysql_query
为您使用的删除查询mysqli_query
注意{ {1}}在最后一个函数中,你不能在这里使用mysqli,因为你已经连接了mysql适配器。
解释要点2:
你有i
之后你有return $result;
PHP不会执行那行代码,因为对于PHP和任何其他编程语言,当他们看到mysqli_query("...");
这意味着功能已完成,无需执行任何操作,因此您无法在return
解释要点3:
在您的整个发布功能中,我没有return
所以基本上$key
为空,我认为您的意思是在该查询中使用$key
。即使您使用$result
,您的删除也无法使用,因为$result
是一个字符串,您将所有字段加入其中并在每个字段之间添加了$result
管道标记其他。所以列|
永远不会等于你的$ result。您应该将$ key替换为您要删除的测试列的实际值,如下所示:
test
解释要点4:
如果您刚刚开始学习PHP,那么您最好不要学习将来版本中完全删除的任何已弃用的功能。因此,在使用$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'");
函数的位置,请查看 PDO 或 mysqli ,尤其要了解如何使用准备好的陈述。
我希望我的回答有助于清除一些内容。