Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数据库中的PHP数据检索问题_Php_Sql_Database - Fatal编程技术网

数据库中的PHP数据检索问题

数据库中的PHP数据检索问题,php,sql,database,Php,Sql,Database,好吧,问题是。。。我是一个新手,我试图理解正在发生的事情。我通过html表单发送这个数据名,在数据库中使用POST发送电子邮件。我理解这一切背后的逻辑,但基本上发生的是,每次我输入一个名称,任何名称,它都会呼应else语句:已经有一个使用该名称的用户。它会发回数据库中的第一个名字。当没有名字时,它什么也不发送。因此,这里是块: $query= "SELECT* from users where username='".$_POST['name']."'"; $result =

好吧,问题是。。。我是一个新手,我试图理解正在发生的事情。我通过html表单发送这个数据名,在数据库中使用POST发送电子邮件。我理解这一切背后的逻辑,但基本上发生的是,每次我输入一个名称,任何名称,它都会呼应else语句:已经有一个使用该名称的用户。它会发回数据库中的第一个名字。当没有名字时,它什么也不发送。因此,这里是块:

 $query= "SELECT* from users where username='".$_POST['name']."'";
        $result = mysql_query($query);
        if (!$result){


        $query = "INSERT into users (username, email, password) values
        ('".$_POST["name"]."', '".$_POST["email"]."',  
        '".$passwords[0]."')";
        $result = mysql_query($query);

        if ($result){
            echo "It's entered!";
        } else {
            echo "There's been a problem: ".mysql_error();
        }
     } else {

         echo "There is already a user with that name: <br />";
        $sqlAll = "select * from users";
         $resultsAll = mysql_query($sqlAll);
         $row = mysql_fetch_array($resultsAll);
           while ($row) {

              echo $row["username"]." -- ".$row["email"]."<br />";

           $row = mysql_fetch_array($result);
您可能希望检查而不是检查$结果,我认为如果查询成功,您将返回一个资源,即使它包含零行

您可能还需要阅读:

根据,当出现错误时,mysql\u查询将返回false-对于SELECT、SHOW、DESCRIBE、EXPLAIN和其他返回resultset的语句,mysql\u查询成功时返回资源,错误时返回false。

Escapeeee 首先,你需要学习逃跑。 你从没听说过小约翰尼的吊床吗

正经事

它总是返回的原因是$result中的响应实际上是一种资源数据类型。当强制转换为布尔值时,这将始终是真的。既然你的查询不应该失败

你应该去拿结果。例如这不是最好的方法,但这是一种方法

mysql_fetch_row(result)

在你的代码中看不到任何违反。第一个mysql_查询执行时没有错误,始终返回true。尝试按如下方式测试返回的行数:

if (mysql_num_rows($result) == 0) {
//insert record
} else {
// show alreay exists
}

首先,您正在测试:

if (!$result)
只有当查询失败时,它才会计算为true


在SQL查询中使用输入之前,还应清理所有输入。

这是另一个SQL注入漏洞。他们都是从哪里来的。。。!?!?!?!?!?!?!?!?!?!?!?!我遵循了IBM网站上的教程。这是一个学习教程。伙计,我只是学习注射。我不会在真正的网站上使用它。我在学习@你能提供一个链接吗?我会写信给IBM,要求他们停止推广这种胡说八道。@seb:在线教程通常都是垃圾。给自己买本好书吧!顺便说一句,堆栈溢出不是一块板。如果$result==false,mysql将抛出一个错误,mysql\u num\u行预期参数为resource,但给定布尔值。