我正在尝试在我的数据库中的空表中注册一个新用户名。所以我传入用户名和UID并检查用户是否已经注册了该名称并接受该请求,或者如果没有人拥有我可以接受的名称。如果名称已注册到其他用户,我拒绝该请求。
它始终从下面的代码中返回'Fail'。
if($name_found)
{
if ($udid_mismatch)
{
echo "Fail";
}
但是这个数据库的表是空的,因此它找不到名称或UID是不正确的。谁能看到我的错误?我现在正在圈子里跑。
// Localize the GET variables
$udid = isset($_GET['udid']) ? $_GET['udid'] : "";
$name = isset($_GET['name']) ? $_GET['name'] : "";
// Protect against sql injections
$udid = mysql_real_escape_string($udid);
$name = mysql_real_escape_string($name);
$udid_mismatch=false;
$name_found=false;
$result = mysql_query("SELECT udid FROM ir_usernames WHERE name='$name'");
while( $row = mysql_fetch_assoc($result) ){
$name_found=true;
if($row['udid'] != $udid){
$udid_mismatch=true;
}
break;
}
if($name_found)
{
if ($udid_mismatch)
{
echo "Fail";
}
else
{
echo "Success";
}
} else {
// Insert the username
$retval = mysql_query("INSERT INTO $table(
udid,
name
) VALUES (
'$udid',
'$name'
)",$conn);
if($retval) {
echo "Success";
} else {
echo "Fail_ret";
}
}
mysql_close($conn);
非常感谢, -code
答案 0 :(得分:1)
你说“我正在尝试在我的数据库中的空表中注册一个新用户名。”但是,如果查询未返回任何记录,$ name_found将始终为false。由于它被设置为true(由“失败”的最终输出证明),您的表中必须至少有一条记录。
请检查您的数据以确定表中是否有匹配的记录。
答案 1 :(得分:1)
这可能是缺失的连接吗?
$result = mysql_query("SELECT udid FROM ir_usernames WHERE name='".$name."'");
答案 2 :(得分:1)
您的代码似乎很好,但我看到您的选择和插入查询的方式不同。一个使用$table
变量而另一个不使用。为了和谐,你能尝试类似的东西:
$result = mysql_query("SELECT udid FROM $table WHERE name='$name'" , $conn);
也可以尝试将其用于调试目的。
$result = mysql_query("SELECT * FROM $table WHERE name='$name'" , $conn);
while( $row = mysql_fetch_assoc($result) ){
print_r($row);
// other code
}
这会丢弃整个数据,这会给你一些关于最新情况的提示。