gpt4 book ai didi

php - 我似乎无法防止重复名称输入

转载 作者:行者123 更新时间:2023-11-29 01:09:48 25 4
gpt4 key购买 nike

好的,我已经研究了一段时间了。我想要实现的是防止人们能够创建在 name='name' 字段中输入的相同名称。这是 html 代码。

<div class="fieldclass"><form action='/newlist.php' method='POST'  id="formID">
Name Your Card <input class='ha' type='text' name='name'><p>
<input type='submit' value='create'/>
</form>

这是我的 mysql 页面。

<?php
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "christmas";

// Create connection
$dbhandle = mysqli_connect ($servername, $username, $password, $dbname) or die ("could not connect to database");


$selected = mysql_connect('christmas', $dbhandle);



$query = mysql_query("SELECT * FROM list WHERE name='$name'");
if(mysql_num_rows($query) > 0){
echo 'that name already exists';
}else{
mysql_query("INSERT INTO list(name, one , two, three, four, five, six, seven, eight) VALUES ('$name' , '$one' , '$two' , '$three' , '$four' , '$five' , '$six', '$seven' , '$eight')");

}


mysql_close();
?>

我到底做错了什么?

最佳答案

这里有很多错误。

您将 MySQL 关键字 list 用作函数,仅此一项就会给您带来问题。

旁注:是的,我知道它不是一个“保留”字,它是一个“关键字”,如果用作函数,MySQL 会特别对待关键字,这就是你现在在你的第二个查询中所做的,并且是 MySQL 将其解释为的方式;函数而不是表声明名称。

我建议您将该表重命名为列表,或用刻度线包裹它。

您还混合了不混合的 MySQL API/函数。

所以你的新代码会读作,
同时删除 $selected = mysql_connect('christmas', $dbhandle);

$query = mysqli_query($dbhandle, "SELECT * FROM `list` WHERE name='$name'") 
or die (mysqli_error($dbhandle));

if(mysqli_num_rows($query) > 0){
echo 'that name already exists';
}else{
mysqli_query($dbhandle, "INSERT INTO `list` (name, one, two, three, four, five, six, seven, eight)
VALUES ('$name' , '$one' , '$two' , '$three' , '$four' , '$five' , '$six', '$seven' , '$eight')")
or die (mysqli_error($dbhandle));

}


mysqli_close($dbhandle);

您的代码也对 SQL 注入(inject)开放。使用准备好的语句。

现在,我们不知道您所有变量的来源。

使用错误报告。


我还建议您对变量/输入使用条件 empty()

否则,您可能还会遇到 MySQL 可能会报错的其他错误。

即:

if(!empty($var)){...}

最后,为了确保数据库中没有重复的条目,您可以设置 UNIQUE 约束。

关于php - 我似乎无法防止重复名称输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33536639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com