Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP和MySQL验证问题_Php_Mysql - Fatal编程技术网

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阶段。创建一个查询。如果您不知道需要什么查询,请在此处询问,例如“我有3个颜色名称和一个表。如何检查表中是否已经存在这些颜色”。完成后,请检查以确保查询正常运行并返回所需结果
  • PHP阶段。一旦你有了一个查询,从你的PHP脚本中回显它。然后在下面写一段代码,这些代码从一些变量生成这个查询。打印出来进行比较,直到你得到两个相同的查询
  • HTML阶段。制作一个HTML表单,将颜色名称发送到PHP脚本中,PHP脚本将根据颜色名称创建SQL查询并最终运行
  • 记住:知道要运行哪个查询是非常重要的!没有这些知识,您将无法进一步执行

    这里的每个答案都没有提到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){