Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.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 为2列安装表和防止重复输入_Php_Mysql_Sql_Create Table - Fatal编程技术网

Php 为2列安装表和防止重复输入

Php 为2列安装表和防止重复输入,php,mysql,sql,create-table,Php,Mysql,Sql,Create Table,看看我的代码,当我安装我的表时,出现了一些错误,我不知道该怎么处理它。同时,我也在努力防止meno和priezvisko列的重复输入,当它们与数据库中已有的值一起插入表单时 / vytvorenie tabulky TRIEDA $sql = "CREATE TABLE IF NOT EXISTS trieda( id_triedy INT(4) NOT NULL AUTO_INCREMENT, nazov CHAR(5),

看看我的代码,当我安装我的表时,出现了一些错误,我不知道该怎么处理它。同时,我也在努力防止meno和priezvisko列的重复输入,当它们与数据库中已有的值一起插入表单时

    / vytvorenie tabulky TRIEDA

  $sql = "CREATE TABLE IF NOT EXISTS trieda(
            id_triedy INT(4) NOT NULL AUTO_INCREMENT, 
            nazov CHAR(5),
            PRIMARY KEY (id_triedy),
            UNIQUE KEY (nazov))";

 // vytvorenie tabulky STUDENT


 $sql = "CREATE TABLE IF NOT EXISTS student(
                    id_student INT (5) NOT NULL AUTO_INCREMENT,
                    id_triedy INT (5) NOT NULL,
                    meno CHAR (15),
                    priezvisko CHAR (20),
                    PRIMARY KEY (`meno`, `priezvisko`),
                    KEY (id_student))";


  // spustenie dopytu
  if (mysqli_query($prip,$sql))
  {
    echo "Tabuľka vytvorená";
    echo "<br />";
    echo "<a href='./index.php'><strong>Späť</strong></a>";
  }
  else
  {
    echo "Chyba vytvorenia tabuľky: " . mysqli_error($prip);
    echo "<br />";
    echo "<a href='./index.php'><strong>Späť</strong></a>";
  }
编辑2:

if(isset($_POST['submit']))
{


    //meno a priezvisko
    $student = $_POST['meno'];
    $priezvisko = $_POST['priezvisko'];
    $id_trieda = $_GET['id_triedy'];



    //connect to the database
    include 'config.php';

    //insert results from the form input

$row = mysqli_query("SELECT * FROM student WHERE meno='{$student}' AND priezvisko='{$priezvisko}'");

if($row){
  echo 'Duplicate!';
}else {
  mysqli_query("INSERT INTO student (meno, priezvisko, id_triedy) VALUES( '{$student}', '{$priezvisko}', {$id_trieda} )");   
}
/*  $add = "<table align='center'>
            <tr>
                <td> Študent bol úspešne pridaný do triedy. </td>
            </tr>
            <tr>
                <td><a href='./trieda.php?id_triedy=".$_GET['id_triedy']."'><strong>Späť</strong></a></td>
            </tr>
            </table>";
    $not_add = "<table align='center'>
            <tr>
                <td> Študent s týmto menom a priezviskom už je v tejto triede. </td>
            </tr>
            <tr>
                <td><a href='./trieda.php?id_triedy=".$_GET['id_triedy']."'><strong>Späť</strong></a></td>
            </tr>
            </table>";
*/  



mysqli_close($prip);
}
?>

问题可能是您正在覆盖$sql

链接到

编辑: 正如您所看到的,您的问题是PHP上的mysql_查询不接受同一字符串中的许多查询,因此必须单独发送

$sql1 = "CREATE TABLE IF NOT EXISTS trieda(
                id_triedy INT(4) NOT NULL AUTO_INCREMENT, 
                nazov CHAR(5),
                PRIMARY KEY (id_triedy),
                UNIQUE KEY (nazov));"
$sql2 = "CREATE TABLE IF NOT EXISTS student(
                    id_student INT (5) NOT NULL AUTO_INCREMENT,
                    id_triedy INT (5) NOT NULL,
                    meno CHAR (15),
                    priezvisko CHAR (20),
                    PRIMARY KEY (`meno`, `priezvisko`),
                    KEY (id_student));"

为了防止在字段meno和priezvisko上重复设置复合唯一键,您做到了:主键meno,priezvisko。现在做插入像插入忽略到。。。。看更多

编辑

经典方式


这可能是一个问题,因为它总是只创建学生表…但我也尝试重命名它并编辑if条件,但给了我错误…有什么想法吗?你得到了什么错误?我用你的sql编辑了答案现在应该做什么检查我的编辑,我不得不在你的代码末尾加一个分号,因为我的if条件有错误…现在我得到了这个错误..你使用的是什么版本的MySQL?我已经在sqlfiddle上试过了,它可以与安装在它上面的所有MySQL版本一起工作:/okay carexcer,但是如果条件是两个字符串,它会是什么样子?好的,但是如果我使用INSERT IGNORE,它不会给我错误,它只是不添加值,但它显示值已插入…你需要检查状态:重复还是不重复?它只是没有增加价值——是的。显示将$sql=INSERT IGNORE插入学生菜单、priezvisko、id_triedy值{$student}、{$priezvisko}、{$id_trieda}的代码@费里更新。您确定参数$student=$\u POST['meno']的行存在重复吗;和$priezvisko=$_POST['priezvisko'];?正在检查但仍然存在错误。。。您的代码编写不正确,您缺少{…请再次检查
$sql= "CREATE TABLE IF NOT EXISTS trieda(
            id_triedy INT(4) NOT NULL AUTO_INCREMENT, 
            nazov CHAR(5),
            PRIMARY KEY (id_triedy),
            UNIQUE KEY (nazov));
CREATE TABLE IF NOT EXISTS student(
                    id_student INT (5) NOT NULL AUTO_INCREMENT,
                    id_triedy INT (5) NOT NULL,
                    meno CHAR (15),
                    priezvisko CHAR (20),
                    PRIMARY KEY (`meno`, `priezvisko`),
                    KEY (id_student))"
$sql1 = "CREATE TABLE IF NOT EXISTS trieda(
                id_triedy INT(4) NOT NULL AUTO_INCREMENT, 
                nazov CHAR(5),
                PRIMARY KEY (id_triedy),
                UNIQUE KEY (nazov));"
$sql2 = "CREATE TABLE IF NOT EXISTS student(
                    id_student INT (5) NOT NULL AUTO_INCREMENT,
                    id_triedy INT (5) NOT NULL,
                    meno CHAR (15),
                    priezvisko CHAR (20),
                    PRIMARY KEY (`meno`, `priezvisko`),
                    KEY (id_student));"
try{

$sql = 'SELECT * FROM student WHERE meno="'.$student.'" AND priezvisko="'.$priezvisko.'"';
mysqli_real_escape_string($link, $sql); // escaping string 
$row = mysqli_query($link,$sql); // doing select - check on duplicate

if (mysqli_num_rows($row)){ // if return > 0 is means duplicate 
   echo 'Duplicate!';
}else{ 
     // not duplicate
     echo 'Inserting';
     mysqli_query($link,"INSERT INTO student (meno, priezvisko, id_triedy) VALUES( '{$student}', '{$priezvisko}', '{$id_trieda}') "); // inserting
 }

} catch (Exception $e){
      echo  $e->getMessage();
}