在php中删除数据库中显示的键

时间:2014-10-28 10:38:32

标签: php

所以我有这个关键的赠品脚本,现在我想从数据库中删除显示的键。如何在我编写的代码中使用它?

所以$ 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
}

?>

1 个答案:

答案 0 :(得分:1)

1-你使用mysql和mysqli同时使用一个...

2-你的删除查询是在返回之后所以永远不会运行。

3-什么是$ key?我不知道你在哪里设置它。

4-停止使用mysql_ *这些函数已被弃用。将mysqli或PDO与预备语句一起使用。

解释要点1:

在您的dispres函数开头的代码中,您最后使用mysql_connectmysql_select_dbmysql_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 ,尤其要了解如何使用准备好的陈述。

我希望我的回答有助于清除一些内容。