我正在制作自己的测试应用程序,并想要一个登录页面。当用户通过凭据时,它应该是 echo Success 。 但我没有成功。
所以,首先,我想与你们分享我的代码。请看看。
<?php
define ('DB_HOST', '127.0.0.1');
define ('DB_NAME', 'sqltest');
define ('DB_USER', 'sqltest');
define ('DB_PASSWORD', 'sqltest');
$conn=mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die ("failed to connect to db". mysql_error());
$db=mysql_select_db (DB_NAME, $conn) or die ("failed to connect to db". mysql_error());
$v1=@$_POST['username'];
$v2=@$_POST['password'];
$query = "SELECT Username, Password FROM userinfo WHERE username=".'$v1'. "AND password=.'$v2'.";
$v3 = mysql_query($query);
if ($v3 === true){
echo "success".$query;
}
else {
echo "failed";
}?>
因此,您可以看到带有变量的MySQL查询,并将其传递给 mysql_query 进行初始化。该查询将检查数据库中的用户凭据($ v1,$ v2)。如果找到用户凭证,则成功将在显示屏上回显,否则失败。
但我只在屏幕上看到失败。那是什么原因?我知道网上有很多代码,但我想要自己的代码
查询是否正确?或其他东西。
我知道我的PHP代码中存在很多错误。这就是我来这里的原因。
请澄清说明。
谢谢,等待.....
答案 0 :(得分:1)
你的字符串引用是错误的。这是更正的行:
SCNBox *Box = [SCNBox boxWithWidth:6.0 height:6.0 length:6.0 chamferRadius:Radius];
boxNode = [SCNNode nodeWithGeometry:Box];
[arr addObject:boxNode];
[Box setMaterials:arr];
mysql_query在成功时不返回true,但在失败时返回false,因此您还需要将此行更正为:
$query = "SELECT `username`, `password` FROM userinfo WHERE `username` = '$v1' AND `password` = '$v2'";
顺便说一下:
答案 1 :(得分:1)
试试这个:
<?php
define ('DB_HOST', '127.0.0.1');
define ('DB_NAME', 'sqltest');
define ('DB_USER', 'sqltest');
define ('DB_PASSWORD', 'sqltest');
$conn=mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die ("failed to connect to db". mysql_error());
$db=mysql_select_db (DB_NAME, $conn) or die ("failed to connect to db". mysql_error());
$v1=@$_POST['username'];
$v2=@$_POST['password'];
$query = "SELECT Username, Password FROM userinfo WHERE username='$v1' AND password='$v2'";
$v3 = mysql_query($query);
if ($v3){
echo "success";
}
else {
echo "failed";
} ?>
答案 2 :(得分:1)
当PHP变量在双引号字符串中时,它将被视为变量,并且将使用它的值。但是当变量在单引号内时,变量将被视为字符串,而不是变量,因此不会被解析,也不会使用它的值。
所以而不是:
$query = "SELECT Username, Password FROM userinfo WHERE username=".'$v1'. "AND password=.'$v2'.";
那些$v1
和'$v2'
将不会被解析,因为它们在单引号字符串中你应该有:
$query = "SELECT Username, Password FROM userinfo WHERE username='".$v1."' AND password='".$v2."'";
其中变量不在字符串中。请注意,单引号将移动到双引号字符串。或者甚至喜欢这样:
$query = "SELECT Username, Password FROM userinfo WHERE username='$v1' AND password='$v2'";
其中$v1
和$v2
位于双引号字符串中,因此它们将被解析。不要在双引号内单引号混淆。只有第一个用过 - 第二个只是一个共同的角色。因此,在我的上一个示例中,$v1
和$v2
位于双引号字符串中,单引号只是属于该字符串的字符。
当然,考虑一下sql注入,并且至少要先将用户收集的值转义为sql:
$query = "SELECT Username, Password FROM userinfo WHERE username='".addslashes($v1)."' AND password='".addslashes($v2)."'";