PHP中的错误比较
我已经制作了一个PHP函数来在数据库中存储一些数据。然而,当我测试它时,一个比较出错了。它应该发现post包含一个带false的布尔值。当在屏幕上打印时,它看起来很好,但是,比较仍然是错误的。这是我认为重要的代码 PHP函数:PHP中的错误比较,php,post,syntax,Php,Post,Syntax,我已经制作了一个PHP函数来在数据库中存储一些数据。然而,当我测试它时,一个比较出错了。它应该发现post包含一个带false的布尔值。当在屏幕上打印时,它看起来很好,但是,比较仍然是错误的。这是我认为重要的代码 PHP函数: $FaultMss = ""; $chpw = ""; if($login){ if(isset($_POST['Save_Changes'])){ $nun = $db->real_escape_string($_POST['nun']); $n
$FaultMss = "";
$chpw = "";
if($login){
if(isset($_POST['Save_Changes'])){
$nun = $db->real_escape_string($_POST['nun']);
$nem = $db->real_escape_string($_POST['nem']);
$ncn = $db->real_escape_string($_POST['ncn']);
$nct = $db->real_escape_string($_POST['nct']);
if(isset($_POST['chpw'])){
$chpw = "checked";
$opw = $_POST['opw'];
$npw = $_POST['npw'];
$cnpw = $_POST['cnpw'];
}
print_r($_POST['remove']); //This outputs the correct value
if($_POST['remove'] == true){ //Here it goes wrong. I should get false when pressing the html link "save changes". But I always get true.
print_r($_POST['remove']); //This outputs the correct value
$FaultMss = "A removement";
}else{
$FaultMss = "Not a removement";
}
}else{
$uns = $db->real_escape_string($un);
$Result = mysqli_query($db, "SELECT * FROM `accounts` WHERE `Username`='" . $uns . "'");
$row = $Result->fetch_object();
$nun = $un;
$nem = $row->Email;
$ncn = $row->Country;
$nct = $row->City;
}
}
print_r函数显示良好的值。所有数据库查询都是正确的$联合国在这之前就已经制定了。在这之前也进行了连接
HTML格式:
<div id="Personal_info_wrapper" style="overflow:auto; position:absolute; top:40; left:40; width:460; height:430;">
<?php
if($login){
echo '<form id="personalInfo" action="" method="POST">
<label for="un">Username:</label><br/>
<input type="text" id="un" name="nun" value="' . $nun . '"/><br/>
<br/>
<input type="checkbox" id="chpw" name="chpw" value=true ' .$chpw. '/><label for="chpw">I want to change my password</label><br/>
<label for="opw">Old password</label><br/>
<input type="password" id="opw" name="opw"/><br/>
<label for="npw">New password</label><br/>
<input type="password" id="npw" name="npw"/><br/>
<label for="cnpw">Verify new password</label><br/>
<input type="password" id="cnpw" name="cnpw"/><br/>
<label for="em">E-mail:</label><br/>
<input type="email" id="em" name="nem" value="' . $nem . '" style="width:200px;"/><br/>
<label for="cn">Country:</label><br/>
<input type="text" id="cn" name="ncn" value="' . $ncn . '"/><br/>
<label for="ct">City:</label><br/>
<input type="text" id="ct" name="nct" value="' . $nct . '"/><br/>
<input type="hidden" name="Save_Changes" value=true/>
<input type="hidden" name="Tab" value=4/>
<input type="hidden" id="remove" name="remove" value=false />
<br/>
<a href=\'Javascript:document.forms["personalInfo"].submit();\'>Save changes</a> <a href="#" onclick="ConfirmRemoval()">Delete this account</a><br/>
' . $FaultMss . '</center>
</form>';
}
它返回true,因为存在与$\u POST['remove']关联的值-除非没有值,或者该值设置为false,否则它将始终返回true
尝试===而不是==:)
编辑:示例:
<?php
$lol = 'man this is a string';
echo ($lol) ? 'true (==)' : 'false (==)'; echo "\n";
echo ($lol===true) ? 'true (===)' : 'false (===)';
/*
Output:
true (==)
false (===)
*/
$lol = true;
echo ($lol) ? 'true (==)' : 'false (==)'; echo "\n";
echo ($lol===true) ? 'true (===)' : 'false (===)';
/*
Output:
true (==)
true (===)
*/
它返回true,因为有一个值与$\u POST['remove']关联-除非没有值,或者该值设置为false,否则它将始终返回true
尝试===而不是==:)
编辑:示例:
<?php
$lol = 'man this is a string';
echo ($lol) ? 'true (==)' : 'false (==)'; echo "\n";
echo ($lol===true) ? 'true (===)' : 'false (===)';
/*
Output:
true (==)
false (===)
*/
$lol = true;
echo ($lol) ? 'true (==)' : 'false (==)'; echo "\n";
echo ($lol===true) ? 'true (===)' : 'false (===)';
/*
Output:
true (==)
true (===)
*/
它返回true,因为有一个值与$\u POST['remove']关联-除非没有值,或者该值设置为false,否则它将始终返回true
尝试===而不是==:)
编辑:示例:
<?php
$lol = 'man this is a string';
echo ($lol) ? 'true (==)' : 'false (==)'; echo "\n";
echo ($lol===true) ? 'true (===)' : 'false (===)';
/*
Output:
true (==)
false (===)
*/
$lol = true;
echo ($lol) ? 'true (==)' : 'false (==)'; echo "\n";
echo ($lol===true) ? 'true (===)' : 'false (===)';
/*
Output:
true (==)
true (===)
*/
它返回true,因为有一个值与$\u POST['remove']关联-除非没有值,或者该值设置为false,否则它将始终返回true
尝试===而不是==:)
编辑:示例:
<?php
$lol = 'man this is a string';
echo ($lol) ? 'true (==)' : 'false (==)'; echo "\n";
echo ($lol===true) ? 'true (===)' : 'false (===)';
/*
Output:
true (==)
false (===)
*/
$lol = true;
echo ($lol) ? 'true (==)' : 'false (==)'; echo "\n";
echo ($lol===true) ? 'true (===)' : 'false (===)';
/*
Output:
true (==)
true (===)
*/
首先,您从未定义$un
,因此您的select查询将始终是其中username='
。我认为这也在解释中。它是在此代码之前定义的,就像数据库连接一样。在比较之前,请尝试var\u dump($\u POST['remove'])
。这里有一个字符串,而不是布尔值,它的计算结果将为true。但为什么它不是布尔值?@D-Inventor-因为它是由web表单提交的,它们将所有内容都转换为字符串。您可以将其转换为布尔值,或将其作为字符串进行比较。例如,您从未定义$un
,因此您的select查询将始终是,其中username='
。我认为这也在解释中。它是在此代码之前定义的,就像数据库连接一样。在比较之前,请尝试var\u dump($\u POST['remove'])
。这里有一个字符串,而不是布尔值,它的计算结果将为true。但为什么它不是布尔值?@D-Inventor-因为它是由web表单提交的,它们将所有内容都转换为字符串。您可以将其转换为布尔值,或将其作为字符串进行比较。例如,您从未定义$un
,因此您的select查询将始终是,其中username='
。我认为这也在解释中。它是在此代码之前定义的,就像数据库连接一样。在比较之前,请尝试var\u dump($\u POST['remove'])
。这里有一个字符串,而不是布尔值,它的计算结果将为true。但为什么它不是布尔值?@D-Inventor-因为它是由web表单提交的,它们将所有内容都转换为字符串。您可以将其转换为布尔值,或将其作为字符串进行比较。例如,您从未定义$un
,因此您的select查询将始终是,其中username='
。我认为这也在解释中。它是在此代码之前定义的,就像数据库连接一样。在比较之前,请尝试var\u dump($\u POST['remove'])
。这里有一个字符串,而不是布尔值,它的计算结果将为true。但为什么它不是布尔值?@D-Inventor-因为它是由web表单提交的,它们将所有内容都转换为字符串。您可以将其转换为布尔值,或将其作为字符串进行比较。您不应该测试$\u POST['remove']==true,除非您将布尔值指定给$\u POST['remove'],这就是我所做的$_POST['remove']要么为false,要么为true(我猜您是在分配字符串,而不是布尔值)是的,您必须是。。。只是做了一个例子并贴在上面:P这是你作为初学者所犯的错误。。。现在它可以工作了。你不应该测试$\u POST['remove']==true,除非你给$\u POST['remove']赋值,我就是这么做的$_POST['remove']要么为false,要么为true(我猜您是在分配字符串,而不是布尔值)是的,您必须是。。。只是做了一个例子并贴在上面:P这是你作为初学者所犯的错误。。。现在它可以工作了。你不应该测试$\u POST['remove']==true,除非你给$\u POST['remove']赋值,我就是这么做的$_POST['remove']要么为false,要么为true(我猜您是在分配字符串,而不是布尔值)是的,您必须是。。。只是做了一个例子并贴在上面:P这是你作为初学者所犯的错误。。。现在它可以工作了。你不应该测试$\u POST['remove']==true,除非你给$\u POST['remove']赋值,我就是这么做的$_POST['remove']要么为false,要么为true(我猜您是在分配字符串,而不是布尔值)是的,您必须是。。。只是做了一个例子并贴在上面:P这是你作为初学者所犯的错误。。。现在它起作用了。