php的新手,表单,POST和数据库的问题

时间:2011-08-12 15:21:59

标签: php

我正在学习php并保持简单(我认为),这就是我在下面尝试做的事情。

- 迄今为止的工作:

我制作了一个小型迷你表格,我想做的是当这个人输入他们的电子邮件地址时,会发生以下几件事:

  1. 根据从输入的电子邮件中获取的数据库信息显示具有实际名字的虚拟消息。
  2. 根据输入的电子邮件删除数据库行。
  3. 接下来的流程页面会显示一条自定义消息,例如“你好名字在这里,很抱歉看到你去等等吧”

    现在我还没有编写帐户删除部分,因为我收到了错误。我在DW或Aptana中没有得到语法或任何其他错误。我正在测试时。 我收到的错误是:注意:使用未定义的常量mysqli_error - 在第32行假设'mysqli_error',这行是

    $sn_nameQueryStringResults = mysqli_query($connect2db, $sn_nameQueryString) or die( "Sorry but theres a connection to database error" . mysqli_error);
    

    这是我到目前为止的形式:

    <form method="post" action="snDelAcc_proc.php">
    <table width="500" border="0">
        <tr>
            <td>Enter your email address here:</td>
            <td>
            <input type="text" name="accDel" width="250" >
            </td>
        </tr>
        <tr>
            <td>
            <input type="submit" name="submit">
            </td>
        </tr>
    
    </table>
    

    这是流程页面:

    <?php
    
    
    
    
    // - - connect to db.
    $connect2db = mysqli_connect('127.0.0.1','root','passhere','dbtest');
    if(!$connect2db){
        die("Sorry but theres a connection to database error" . mysqli_error);
    }
    
    //get emailfrom first page.
    $emailaddy = $_POST['accDel'];
    
    
    $sn_nameQueryString = " SELECT FROM email_list WHERE email = '$emailaddy'";
    
    
    
    
    $sn_nameQueryStringResults = mysqli_query($connect2db, $sn_nameQueryString) or die( "Sorry but theres a connection to database error" . mysqli_error);
    
    
    
    
    //get the name with fetch
    $actualFnameGet = mysqli_fetch_array($sn_nameQueryStringResults);
    //$sn_query = " DELETE FROM email_list WHERE email= ";
    
    
    echo $actualFnameGet['firstname'];
    
    
    ?>
    

    为什么我错了任何想法? 我有点失落,提前谢谢。

2 个答案:

答案 0 :(得分:2)

首先,由于mysqli_error是一个函数,因此无法打印您的错误,因此您必须编写mysqli_error()

其次,您的查询中有错误:输入您想要的所有字段或只输入*

SELECT * FROM email_list WHERE email = ...

最后但同样重要的是,您的查询非常容易受到sql注入的影响,方法是将post变量$emailaddy直接放入查询而不转义它,因此您应该使用:

"SELECT * FROM email_list WHERE email = '".mysqli_real_escape_string($emailaddy)."'";

答案 1 :(得分:1)

mysqli_error是一个函数,应该是mysqli_error($link),其中$link是连接。

在您的情况下mysqli_error($connect2db)