如果变量在db然后停止 - 如果变量不 - 然后输入它
问题描述:
我一直在试图让这个脚本完成一段时间了 - 即时通讯类型的新的PHP和MySQL,但我一直试图让这个检查数据库的用户名,然后如果用户名存在 - 停止检查数据库,如果它不存在将其添加到数据库。如果变量在db然后停止 - 如果变量不 - 然后输入它
这里是我的代码:
//input from application
$test = "wheelsmanx";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT mainusername FROM CCCpro_test";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
if ($row["mainusername"] === $test) {
echo "User Name Already In Use.";
}if($row["mainusername"] !== $test){
echo "this statement";
[code that inserts into db i can do this part myself]
}
}
$conn->close();
} else {
echo "0 results";
}
$conn->close();
答
与您的代码的问题是,你做的新名称的INSERT
的if
声明已经确认用户的存在已经内。另外,我认为你通过选择所有用户搞砸了你的SELECT
声明。
查看INSERT ON DUPLICATE以获取更好的方法,或者修改您的代码,如下所示。
$sql = "SELECT mainusername FROM CCCpro_test WHERE mainusername = $test";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo "User Name Already In Use.";
}
else{ //no rows selected therefore the user doesn't exist
[code that inserts into db i can do this part myself]
}
$conn->close();
请仔细阅读我有地方去,所以我是懒惰,所以我没有不更新它的$test
变量绑定$test
绑定变量,因此不要复制并粘贴此代码。请阅读this post关于PDO和变量绑定以防止SQL注入。
答
这里是我的全部工作代码,如果有人需要它 - 它使用POST方法 - 从HTML表单....万一有人需要它劈死件别的东西
好,大家好我欣赏所有的帮助:D,但我已经找到了答案或绕过它我想 - 我想它一整天,我怎么能使它工作,我想出了这
$servername = "127.0.0.1";
$username = "TESTUSER";
$password = "TESTPASS";
$dbname = "TESTDB";
$testusername = $_POST['mainusername'];
$testpassword = $_POST['mainpassword'];
//input from application
$test = $_POST['mainusername'];
$test2 = "0";
//Count switch
$countswitch = "0";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql1 = "INSERT INTO CCCpro_test (mainusername, mainpassword) VALUES ('$testusername','$testpassword')";
$sql = "SELECT mainusername FROM CCCpro_test";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
if ($row["mainusername"] === $test) {
echo "Im Sorry Username Already In Use";
$countswitch ++;
}
}
if($countswitch == $test2){
echo "User Name Registered";
$db_handle = mysql_connect($servername, $username, $password);
$db_found = mysql_select_db($dbname, $db_handle);
if ($db_found) {
$result1 = mysql_query($sql1);
mysql_close($db_handle);
}
}
if ($countswitch == 3){
echo "this";
}
} else {
echo "0 results";
}
$conn->close();
输出:用户名称已经在使用。这个声明 注:我知道为什么它这样做 - 我只是不知道如何阻止它通过所有的数据库出去做出口 – wheelsmanx
你应该使用'if(condition){//错误消息exit; } else {//插入db}' – aldrin27