首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这个echo命令没有被执行?

问为什么这个echo命令没有被执行?
EN

Stack Overflow用户
提问于 2014-11-16 04:10:44
回答 4查看 87关注 0票数 0

有没有人能帮我解释一下为什么echo命令“会员编号不正确,请再试一次”不起作用吗?

其他一切似乎都运行正常。

代码语言:javascript
复制
<?php
define('DB_HOST', 'localhost');
define('DB_NAME', 'DBNAME');
define('DB_USER', 'USER');
define('DB_PASSWORD', 'PASS');
$con = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die("Failed to connect to MySQL: " . mysql_error());
$db = mysql_select_db(DB_NAME, $con) or die("Failed to connect to MySQL: " . mysql_error());
$mem_no = $_POST['mem_no'];

function SignIn()
{
    session_start();
    if (!empty($_POST['mem_no'])) {
        $query = mysql_query("SELECT * FROM members where mem_no = '$_POST[mem_no]'") or die(mysql_error());
        $row = mysql_fetch_array($query) or die(mysql_error());
        if (!empty($row['mem_no'])) {
            $_SESSION['mem_no'] = $row['mem_no'];
            header("Location: " . $_POST['cat_link']);
        } else {
            echo "Incorrect Membership Number, please try again.";
        } // This line is not executing
    } else {
        echo "Please go back and enter a Membership Number";
    }
}

if (isset($_POST['submit'])) {
    SignIn();
}

HTML表单如下所示:

代码语言:javascript
复制
<form method="post" action="/check.php">
<p>Membership No.</p>
<input name="mem_no" type="text" id="mem_no">
<input name="cat_link" type="hidden" value="https://www.redirectlink.com">
<input name="submit" type="submit" id="submit" value="AELP Member Rate">
</form>

链接到测试:https://www.eiseverywhere.com/ehome/index.php?eventid=106953&tabid=239372和一个有效的‘会员编号’是1234,如果你想测试。

将表单留空确实会给出正确的错误消息,输入有效的号码会正确地重定向我,但输入无效的号码(例如9999)没有给出正确的输出消息。

提前感谢您的回复。

致敬,Ash

EN

回答 4

Stack Overflow用户

发布于 2014-11-16 04:20:23

您需要计算行数,因为即使sql查询没有结果,它也不是空的。那就数一数。

代码语言:javascript
复制
function SignIn()
{
    session_start();
    if (!empty($_POST['mem_no'])) {
        $query = mysql_query("SELECT * FROM members where mem_no = '". $_POST['mem_no'] ."'") or die(mysql_error());

        #count rows
        $count = mysql_num_rows($query);
        $row = mysql_fetch_array($query) or die(mysql_error());

        #check count
        if ($count != 0) {
            $_SESSION['mem_no'] = $row['mem_no'];
            header("Location: " . $_POST['cat_link']);
        } else {
            echo "Incorrect Membership Number, please try again.";
        } 

    } else {
        echo "Please go back and enter a Membership Number";
    }
}

只是一个小小的提醒。PHP中的mysql_类已被弃用,并将在下一个版本中删除,我建议您使用mysqli_或使用PDO的

票数 1
EN

Stack Overflow用户

发布于 2014-11-16 04:24:51

由于几个原因,您的脚本很难调试:

它是无缩进的(我已经在问题中为你修正了这一点),

  • ,你正在使用不推荐使用的mysql函数(参见this)。切换到PDO或mysqli。

  • 您的脚本中有几个退出点。每次你调用数据库时,如果你失败了,你就会“死”。这可不好,

无论如何,我怀疑其中的一个“死亡”使您的脚本过早结束。您可以自己处理错误,而不是使用die。

票数 0
EN

Stack Overflow用户

发布于 2014-11-16 04:53:15

我认为这应该行得通:

(还要将错误报告放在顶部!)

代码语言:javascript
复制
<?php
    error_reporting(E_ALL);
    ini_set("display_errors", 1);
?>

<?php
    session_start();

    define('DB_HOST', 'localhost');
    define('DB_NAME', 'DBNAME');
    define('DB_USER', 'USER');
    define('DB_PASSWORD', 'PASS');

    $con = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die("Failed to connect to MySQL: " . mysql_error());
    //$db = mysql_select_db(DB_NAME, $con) or die("Failed to connect to MySQL: " . mysql_error()); //Useless

    $mem_no = $_POST['mem_no'];

    function SignIn() {

        if (!empty($_POST['mem_no'])) {
            $query = mysql_query("SELECT * FROM members WHERE mem_no = '" . $_POST['mem_no'] . "'") or die(mysql_error());
            $row = mysql_fetch_array($query) or die(mysql_error());
            $count = mysql_num_rows($query);

            if ($count >= 1) {
                $_SESSION['mem_no'] = $row['mem_no'];
                header("Location: " . $_POST['cat_link']);
            } else {
                echo "Incorrect Membership Number, please try again.";
            } // This line is not executing
        } else {
            echo "Please go back and enter a Membership Number";
        }
    }

    if (isset($_POST['submit'])) {
        SignIn();
    }
?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26950221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档