【发布时间】:2014-04-14 08:22:38
【问题描述】:
我正在为一个类创建一个页面,并且我有很多不同的 while 循环和很多不同的 INSERT 语句。直到我发现它们没有被正确输入之前,我认为这不会有问题。它们都被输入了,但发生的事情是它们都在单独的行中输入,而不是在它们的各个列中输入。我需要它,以便将所有 INSERT 语句合并为一个,同时仍然检查以确保数据库中还没有全名。请帮我重写我的代码,以便它可以做到这一点。
这是需要重写的代码,以便它只有一个 INSERT 语句:
<?php
$con = mysql_connect("localhost","a7068104_user2","wiseguy1345");
if(!$con) {
die("could not connect to localhost:" .mysql_error());
}
header("refresh:1.5; url=NamesAction.php");
mysql_select_db("a7068104_world") or die("Cannot connect to database");
$name = mysql_real_escape_string($_POST['firstname']);
$query = "SELECT * FROM names_1 WHERE firstname='$name'";
$result = mysql_query($query);
if(mysql_num_rows($result) > 0 ){
echo "Your first name is already in the database and will not be added again!";
}
else {
$query = "INSERT INTO names_1 (firstname) VALUES('$name')";
$result = mysql_query($query);
if($result) {
echo "Your first name was successfully added to the database!";
}
else{
echo "Your first name couldn't be added to the database!";
}
}
$name = mysql_real_escape_string($_POST['lastname']);
$query = "SELECT * FROM names_1 WHERE lastname='$name'";
$result = mysql_query($query);
if(mysql_num_rows($result) > 0 ){
echo "Your last name is already in the database and will not be added again!";
}
else {
$query = "INSERT INTO names_1 (lastname) VALUES('$name')";
$result = mysql_query($query);
if($result) {
echo "Your first name was successfully added to the database!";
}
else{
echo "Your first name couldn't be added to the database!";
}
}
$name = mysql_real_escape_string($_POST['firstname'] . " " . $_POST['lastname']);
$query = "SELECT * FROM names_1 WHERE fullname='$name'";
$result = mysql_query($query);
if(mysql_num_rows($result) > 0 ){
echo "Your full name is already in the database and will not be added again!";
}
else {
$query = "INSERT INTO names_1 (fullname) VALUES('$name')";
$result = mysql_query($query);
}
$age = mysql_real_escape_string($_POST['age']);
$query = "INSERT INTO names_1 (age) VALUES('$age')";
$result = mysql_query($query);
if($result) {
echo "Your name was successfully added to the database!";
}
else {
echo "Your name couldn't be added to the database!";
}
mysql_close($con);
?>
<html>
<head>
<link rel="stylesheet" href="Site.css">
<?php include("Header.php"); ?>
</div>
</head>
<body>
<div id="main">
<h1>Names</h1>
<p>You will be redirected back to the <b>Names</b> page in a moment.</p>
<?php include("Footer.php");?>
</div>
</body>
</html>
【问题讨论】:
-
你到底想做什么?单独检查一个人的名字/姓氏是否存在似乎是一个非常奇怪的设置。同时您坚持将它们存储在同一行?我有一种感觉,你在做一些数据库结构稍显不足的事情......说了你可以看看 REPLACE mysql 命令,它可能会解决你的直接问题:dev.mysql.com/doc/refman/5.0/en/replace.html
-
我不需要更换任何东西。单独检查一个人的名字/姓氏是否存在是一个非常奇怪的设置。我只想做一次检查和一次插入。我可以向你保证,我的数据库结构正确,只是我的代码写得相当糟糕。
-
如果您有 2 个人的名字或姓氏相同 - 即。 (约翰史密斯,约翰詹姆斯),(吉尔琼斯 / 山姆琼斯)。您的前 2 个查询将找到匹配项,您在哪一行插入全名?
-
这甚至不相关。我根据名字和姓氏输入全名,我想在输入名字和姓氏的同一行中输入它。不知道是我说的不清楚还是怎么的。也只是为了清理东西,我只想检查全名是否是唯一的。我将在帖子中进行编辑。