【问题标题】:new to php, problem with form,POST,and databasephp新手,表单、POST和数据库有问题
【发布时间】:2025-12-16 09:50:02
【问题描述】:

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

--工作至今:

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

  1. 根据从输入的电子邮件中获取的数据库信息显示带有实际名字的虚拟消息。
  2. 根据输入的电子邮件删除数据库行。

接下来出现的流程页面有一条自定义消息,例如“你好,这里有名字,很抱歉看到你走啦啦啦”

现在我还没有写帐户删除部分,因为我遇到了一个错误。我在 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'];


?>

关于我为什么错的任何想法? 我有点迷茫,提前谢谢。

【问题讨论】:

  • 使用mysqli_connect_error() 而不是mysqli_error

标签: php


【解决方案1】:

首先你的错误不能打印,因为mysqli_error是一个函数,所以你要写mysqli_error()

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

SELECT * FROM email_list WHERE email = ...

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

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

【讨论】:

  • 谢谢。工作。 sql injections..ive 听说过,但我还没有,哈哈。我是一个完整的菜鸟哈哈。不过谢谢。
【解决方案2】:

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

在你的情况下mysqli_error($connect2db)

【讨论】:

  • 这就是我不明白的。我复制/粘贴同一行,我做了一个简单的测试,它连接得很好。例如,我采用同一行,从 db where 语句中选择全部,它作为第一行的数据返回。如您所见,这就是我迷路的原因
  • 我错过了答案中的“i”,现在再试一次。