PHP和MySQL验证问题
我正在尝试检查一种颜色是否已经输入到数据库中,如果是,则不应将该颜色输入并存储到数据库中,并且以下错误代码PHP和MySQL验证问题,php,mysql,Php,Mysql,我正在尝试检查一种颜色是否已经输入到数据库中,如果是,则不应将该颜色输入并存储到数据库中,并且以下错误代码此颜色已经输入 应显示。但是由于某种原因,我不能让它工作,有人能帮我吗 颜色名称输入到用户输入的数组$\u POST['color']中 下面是收集颜色的html代码 <input type="text" name="color[]" /> <input type="text" name="color[]" /> <input type="text" name=
此颜色已经输入 应显示
。但是由于某种原因,我不能让它工作,有人能帮我吗
颜色名称输入到用户输入的数组$\u POST['color']
中
下面是收集颜色的html代码
<input type="text" name="color[]" />
<input type="text" name="color[]" />
<input type="text" name="color[]" />
<input type="text" name="color[]" />
<input type="text" name="color[]" />
<input type="text" name="color[]" />
<input type="text" name="color[]" />
<input type="text" name="color[]" />
<input type="text" name="color[]" />
下面是PHP&MySQL代码
for($i=0; $i < count($_POST['color']); $i++) {
$color = "'" . $_POST['color'][$i] . "'";
}
$mysqli = mysqli_connect("localhost", "root", "", "sitename");
$dbc = mysqli_query($mysqli,"SELECT *
FROM colors
WHERE color = '$color'
AND user = '$user_id' ");
if(mysqli_num_rows($dbc) == TRUE) {
echo '<p>This color has already been entered!</p>';
} else if(mysqli_num_rows($dbc) == 0) {
// enter the color into the database
}
for($i=0;$i”;
}else if(mysqli_num_行($dbc)==0){
//将颜色输入数据库
}
您有多种颜色,因此应该使用以下类似的颜色
$mysqli = mysqli_connect("localhost", "root", "", "sitename");
for($i=0; $i < count($_POST['color']); $i++) {
$color = "'" . $_POST['color'][$i] . "'";
$dbc = mysqli_query($mysqli,"SELECT *
FROM colors
WHERE color = '$color'
AND user = '$user_id' ");
if(mysqli_num_rows($dbc) == TRUE) {
echo '<p>'.$color.' color has already been entered!</p>';
} else if(mysqli_num_rows($dbc) == 0) {
// enter the color into the database
}
}
$mysqli=mysqli_connect(“本地主机”、“根目录”、“站点名称”);
对于($i=0;$i”;
}else if(mysqli_num_行($dbc)==0){
//将颜色输入数据库
}
}
我猜您遇到的问题是,当您尝试向数据库中输入新值时,数据库连接已完全打开。
解决方案是首先从数据库中提取所有内容并将其存储在数组中,然后运行检查并相应地添加。您应该使用in操作符。比如说,
$color = null;
for($i=0; $i < count($_POST['color']); $i++) {
if ($color == null)
$sep = '';
else
$sep = ',';
$color = $sep . "'" . $_POST['color'][$i] . "'";
}
$mysqli = mysqli_connect("localhost", "root", "", "sitename");
$dbc = mysqli_query($mysqli,"SELECT *
FROM colors
WHERE color IN ($color)
AND user = '$user_id' ");
$color=null;
对于($i=0;$i
为了避免不必要的查询,您应该首先获取所有颜色,然后对照它们进行检查:
$colors = array();
$mysqli = mysqli_connect("localhost", "root", "", "sitename");
if($result = mysqli_query($mysqli,"SELECT color FROM colors WHERE user = '$user_id' ") {
while($row = mysqli_fetch_array($result)) {
$colors[] = $row['color'];
}
mysqli_free_result($result);
}
foreach($_POST['color'] as $color) {
if(in_array($color, $colors) {
echo '<p>Color ' . $color . ' has already been entered!</p>';
}
else {
// enter the color into the database
}
}
$colors=array();
$mysqli=mysqli_connect(“本地主机”、“根目录”、“站点名称”);
如果($result=mysqli\u query($mysqli,“从颜色中选择颜色,其中user='$user\u id')){
while($row=mysqli\u fetch\u数组($result)){
$colors[]=$row['color'];
}
mysqli_免费_结果($result);
}
foreach($_POST['color']作为$color){
if(在数组中($color,$colors){
已输入echo“Color.”$Color.。”;
}
否则{
//将颜色输入数据库
}
}
确保清理用户输入!这实际上不是一个答案,但需要了解的是非常重要的一点: 我的意思很简单:首先,你必须只处理SQL,而不是PHP或HTML。创建一个SQL查询来检查颜色,运行它,测试它,一旦你完成了统计,就开始使用PHP。尝试从一个变量创建相同的查询,并与示例一进行比较。完成后,你终于可以使用HTML了 因此,开发过程必须分为3个阶段:
这里的每个答案都没有提到SQL查询本身。你知道要运行哪个SQL查询吗?你在for语句中覆盖了
$color
,所以只取最后一个。但是无论如何,如果你打印这个颜色已经输入了!
用户怎么知道是哪一个呢?@Col.Shrapnel你是什么意思?@Felix Kling我想尝试并编写我自己的宝贝步骤。我对PHP不熟悉,但很有眼光。你可以指定不起作用的部分。你有没有遇到任何错误等?还记得注入问题。mysql\u real\u escape\u string($\u POST['color'][$I])
,htmlspecialchars($color)
…我得到以下错误mysqli_num_rows()期望参数1是mysqli_result,给定的布尔值
这是这行if(mysqli_num_rows($dbc)==TRUE){