1

人们

概述我正在创建一个用于学习目的的虚拟网站,因此它的功能主义者是基本的和安全的,不在议程 atm 上。

我遇到了这个我无法解决的小问题。所以我为什么要做的是添加一个新帐户并回显一条消息,说插入是悬疑的,但是我在一个我想添加新记录的地方收到一条错误消息,说假设持有的变量消息未定义。

更多:所以,当我在 wbesite 的主页上并单击注册按钮时,会弹出错误消息,但是当我实际提交查询以添加帐户时,错误消息会更改为我要显示的消息.

<?php



if(isset($_POST['submited'])){

    include('connect_mysql.php');


    $username= $_POST['username'];
    $password = $_POST['password'];
    $firstname = $_POST['first_name'];
    $lastname = $_POST['last_name'];
    $email = $_POST['email'];

    $NewAccountQuery = "INSERT INTO users (username, password, first_name, last_name, email) VALUES ('$username','$password', '$firstname', '$lastname', '$email')";

    if(!mysql_query($NewAccountQuery)){

        die(mysql_error());

    }//end of nested if statment

    if($NewAccountQuery){
         echo $confirm = "1 record added to the database";
    }
}//end of if statment

?>
<html>
<head>

<title>Home Page</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>

    <div id="wrapper">
        <header><h1>E-Shop</h1></header>


        <article>
        <h1>Welcome</h1>

            <h1>Create Account</h1>

        <div id="login">

                <ul id="login">

                <form method="post" action="register.php"  >
                    <fieldset>  
                        <legend>Fill in the form</legend>

                        <label>Select Username : <input type="text" name="username" /></label>
                        <label>Password : <input type="password" name="password" /></label>
                        <label>Enter First Name : <input type="text" name="first_name" /></label>
                        <label>Enter Last Name : <input type="text" name="last_name" /></label>
                        <label>Enter E-mail Address: <input type="text" name="email" /></label>
                    </fieldset>
                        <br />

                        <input name="submited" type="submit" submit="submit" value="Create Account" class="button">

                </form>




                </div>
            <form action="index.php" method="post">
            <div id="login">
                <ul id="login">
                    <li>
                        <input type="submit" value="back" onclick="index.php" class="button">   
                    </li>
                </ul>
            </div>      
            </form>


        </article>
<aside>

                <?php print $confirm; ?>


</aside>

<div id="footer">This is my site i Made coppyrights 2013 Tomazi</div>
</div>

</body>
</html>

好的,这是我提交查询之前的图像: 在此处输入图像描述

我提交查询后的图像: 在此处输入图像描述

4

5 回答 5

1

我认为错误信息很清楚。 $confirm没有定义。您只需在“成功查询”部分定义它。if(isset($_POST['submited'])){一个简单的解决方案是在整个块之前定义它。只要放$confirm = '';,什么都不会打印出来。


一些注意事项:

由于您正在学习并且这是全新的,您现在应该停止使用 ext/mysql 并使用PDOormysqli作为您的数据库引擎(我更喜欢前者)。

还有,if($NewAccountQuery){意义不大。它永远是正确的,因为它只是您之前定义的字符串。如果你切换到PDO你可以检查PDOStatement::rowCount

于 2013-02-28T23:41:34.687 回答
1

基本上问题是当您第一次加载主页时 - 它不会进入if(isset($_POST['submited']))条件,因为 $_POST['submitted'] 没有设置。而且由于您在此循环中设置了 $confirm,因此该语句 <?php print $confirm; ?>不会找到 $confirm 变量集。因此它会发出 PHP NOTICE .. 所以就像有人在这里说的那样,要么$confirm = '';在 if 条件之前设置,要么你可以在打印时做这样的事情

<?php 
if(isset($confirm))
   print $confirm; 
?>
于 2013-02-28T23:55:45.387 回答
1
echo $confirm = "1 record added to the database";

应该:

$confirm = "1 record added to the database";
echo $confirm;

看起来你不需要那里的回声,因为你在其他地方回声。如果您只想分配$confirm1 record added to the database,那么您只需要分配它,而无需回显。Echo 基本上以与 print 相同的方式将其输出到 html。

于 2013-02-28T23:38:46.610 回答
0
<?php
if(isset($_POST['submited'])){

    include('connect_mysql.php');

    $username= $_POST['username'];
    $password = $_POST['password'];
    $firstname = $_POST['first_name'];
    $lastname = $_POST['last_name'];
    $email = $_POST['email'];

    $NewAccountQuery = "INSERT INTO users VALUES ('$username','$password', '$firstname', '$lastname', '$email')"; // simplified query if those are only 5 cols in order
    $result = mysql_query($NewAccountQuery);

    if($result){
       $confirm = "1 record added to the database";
    } else {
        exit('error inserting row');
    }
}
?>
于 2013-02-28T23:51:58.090 回答
0

如果您只是回显或打印字符串,则无需先将其分配给变量。这些中的任何一个都可以工作:

echo '1 record added to the database';

或者

$confirm = '1 record added to the database';
echo $confirm;
于 2013-02-28T23:39:36.097 回答