php mysqli 错误信息,PHP-MySQLi处理两次查询或错误

我有一个非常奇怪的错误,我根本不理解.

我有以下以两种方式运行的PHP脚本.

该脚本外壳将新用户添加到mysql数据库.我要检查的是数据库中是否已存在用户名.如果是这样,请设置一个用于决定如何进行的变量.

如果我执行此代码,则此行

if(strcmp($row["username"], $addUser_name) == 0)

被执行(或最好跳入),但我100%确信在执行此行之前,该名称在数据库中不存在(或不应该存在).现在,即使将$errorName设置为1并打印测试,我想要添加到数据库中的数据集也会出现在我的数据库中,但是最后一部分开始于

if(!isset($errorName))

不执行.我一遍又一遍地用简单的echo语句检查了它.

为了查看我的数据集,我删除了这一部分的注释

while ($row = mysqli_fetch_assoc($allUserNames))

{

echo $row["username"]."\n";

}

这部分是正确执行的

if(!isset($errorName))

但是我在数据库中两次找到了数据集.

我根本不了解,为什么Scipt的行为方式如此.我已经尝试了许多不同的方法,但是我无法弄清楚我在做什么错.

include "auth/auth1.php";

include "functions/connectToDB.php";

include "functions/test_input_XSS.php";

if(isset($_GET["startCheck"])) //TODO Mache auch GET noch POST

{

//Sollte niemals true sein! Passiert nur, wenn man Unsinn macht

if(strcmp($_GET["addUser_pw"], $_GET["addUser_pwRepeat"]) !== 0) { die; }

$servername = "localhost";

$databasename = "X";

$mysqluser = "X";

$mysqlpass = "X";

$addUser_name = $_GET["addUser_name"];

$connection = connectToDB($servername, $mysqluser, $mysqlpass, $databasename);

if(mysqli_connect_errno())

{

printf("Connect failed!");

die();

}

$query_getAllUserNames = "SELECT username FROM user;";

$allUserNames = mysqli_query($connection, $query_getAllUserNames);

/*while ($row = mysqli_fetch_assoc($allUserNames))

{

echo $row["username"]."\n";

}*/

while ($row = mysqli_fetch_assoc($allUserNames))

{

if(strcmp($row["username"], $addUser_name) == 0)

{

$errorName = 1;

echo "test";

}

}

if(!isset($errorName))

{

$username = test_input_for_XSS($_GET["addUser_name"]);

$password = hash("sha256", $_GET["addUser_pw"]);

$permission = test_input_for_XSS($_GET["addUser_permission"]);

$query_addUser = "INSERT INTO user (username, passwordhash, permissionlevel) VALUES ('".$username."', '".$password."', '".$permission."');";

$addUserSuccess = mysqli_query($connection, $query_addUser);

if($addUserSuccess !== 1)

{

$hostname = $_SERVER['HTTP_HOST'];

$path = dirname($_SERVER['PHP_SELF']);

echo"Success";

//header("Location: http://".$hostname.($path == "/" ? "" : $path)."/userManagment.php?added=".$username."");

}

else

{

echo "ANNOYING_ERROR";

}

}

//Tidy up

mysqli_free_result($allUserNames);

mysqli_close($connection);

}

?>

这是相应的HTML代码,此后紧跟在同一文件中:

include "home.php";

?>

Einen neuen Benutzer hinzufügen

if(isset($errorName))

{

echo '

Der Nutzername '.$_GET["addUser_name"].' ist bereits vergeben.
Bitte wählen Sie einen anderen aus!

';

}

?>

Nutzername:z.B.: Vorname
Passwort:

onChange="this.setCustomValidity(this.validity.patternMismatch ? '' : ''); if(this.checkValidity()){ form.addUser_pwRepeat.pattern = this.value; }" />

Muss Groß- und Kleinbuchstaben, Zahlen und mindestens 6 Zeichen enthalten
Passwort wiederholen:Muss identisch sein zum ersten eingegebenen Passwort
Berechtigungslevel:

1

2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值