我遵循了一年前的 Unity Client - PHP Server - Database integration 在线教程。代码似乎执行得很好,它完美地到达了“echo“Success””行等。
但是当我查看我的数据库时,那里什么也没有。它是空白的,我不知道为什么。
注意:在线教程使用的是 mysql...而我使用的是(未分解的)mysqli...但似乎没有太大区别,但我完全是新手PHP 编码,只有很少的经验,所以我很可能错了?
<?php
/**
* Created by PhpStorm.
* User: Josh
* Date: 09/04/2016
* Time: 14:11
*/
$Username = $_REQUEST["Username"];
$Password = $_REQUEST["Password"];
$Hostname = "localhost";
$DBName = "statemilitaryrpdb";
$User = "root";
$PasswordP = "";
$link = mysqli_connect($Hostname, $User, $PasswordP, $DBName) or die ("Can't Connect to DB");
if (!$Username || !$Password) {
echo "Empty";
} else
{
$SQL = "SELECT * FROM accounts WHERE Username = '" . $Username ."'";
$Result = @mysqli_query($link, $SQL) or die ("DB ERROR");
$Total = mysqli_num_rows($Result);
if($Total == 0)
{
$insert = "INSERT INTO 'accounts' ('Username', 'Password') VALUES ('" .$Username . "', MD5('" . $Password . "'), 0)";
$SQL1 = mysqli_query($link, $insert);
$Result2 = @mysqli_query($link, $SQL) or die ("DB ERROR");
echo(mysqli_num_rows($Result2));
}
else
{
echo"Username Already Used";
}
}
mysqli_close($link);
最佳答案
$insert = "INSERT INTO 'accounts' ('Username', 'Password') VALUES ('" .$Username . "', MD5('" . $Password . "'), 0)";
答案:用户名和密码是字段,但您试图插入用户名、密码和 0
建议:不要只做 MD5 加密,它非常容易解密。
编辑: 也就像@andrewsi 在评论中所说,如果您只检查它是否为空,那么任何人都可以 SQL 注入(inject)您的数据库并删除您的表或进行更改。确保您正确过滤输入。
关于PHP代码执行但不插入数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36518576/