-2

这是学校的作业。我不知道 PHP 变量等的所有细节,但是!如果我对 id 进行硬编码,那么它会按原样发送。如果没有,那根本就没有。建议?

if ((!empty($_subject)) && (!empty($_text))) {
        $_dbc = mysqli_connect('localhost', 'user', 'password', 'db') or die ('Error Connecting to MySQL server.');

        $_id = $_GET['id'];

        $_query = "SELECT * FROM midterm WHERE id = '$_id'";

        $_result = mysqli_query($_dbc, $_query) or die ('Error Querying Database.');

        while($_row = mysqli_fetch_array($_result)) {
            $_to = $_row['email'];
            $_firstName = $_row['firstName'];
            $_msg = "Dear $_firstName, /n $_text";
            mail($_to, $_subject, $_msg, 'From:' . $_from);         
            echo 'Mail sent to: ' . $_firstName . ' at ' . $_to . '<br />';
        }
4

1 回答 1

0

使用 NULL $_GET['id'] 解决 $_GET/$_POST 问题

<form name="example" action="http://example.com" method="POST"></form>

或者

<form name="example" action="http://example.com" method="GET"></form>

如果变量是从表单发布的,它们将通过服务器发送,您可以在提交的页面上使用 $_POST['key'] 访问它们。如果变量是通过 GET 发送的,它们将被附加到 URL 中的查询字符串中,并且可以通过 $_GET['key'] 在页面上访问。

当您使用该变量$_GET['id']时,它会在 URL 的查询字符串中查找 key id。如果您的 URL 看起来像http://example.com/sript.php?id=123then$_GET['id']将返回123not NULL。这可以通过访问特定的 URL(如上所示)或通过如下形式到达页面来完成:

<form name="example" action="http://example.com/script.php" method="GET">
<input type="text" name="id" />
<input type="submit" value="Try Me" />
</form>

此表单在提交时将使用 GET 将 $_GET['id'] 变量发送到 script.php。

解决邮件未发送的其他问题

您能否在您的 while 循环之前添加以下代码行并让我知道它们在说什么?这会让我知道您的 MySQL 查询是否正常工作。

echo "Rows returned: ".mysqli_num_rows($_result)."<br />";

// this line only works on PHP > 5.3.0
echo "Result dump:<br /><pre>".mysqli_fetch_all($_result)."</pre>"; 

由于 mysqli_num_rows() 返回 0,这意味着您的 SQL 查询SELECT * FROM midterm WHERE id = '7'没有返回任何结果。如果不查看数据库结构,我将无能为力。仔细检查您的代码(并将其与有效的代码进行比较)以尝试查看问题所在。确保表 midterm 中有一行 id = 7。

于 2013-03-06T05:45:31.530 回答