Php 为2列安装表和防止重复输入
看看我的代码,当我安装我的表时,出现了一些错误,我不知道该怎么处理它。同时,我也在努力防止meno和priezvisko列的重复输入,当它们与数据库中已有的值一起插入表单时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),
/ 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();
}