2014-04-13 4 views
0

클래스에 대한 페이지를 만들고 많은 다른 INSERT 문으로 많은 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> 
+0

정확히 무엇을하려고합니까? 존재 여부에 대해 한 사람의 이름/성을 개별적으로 확인하는 것은 매우 이상한 설정입니다. 동시에 당신은 같은 줄에 그것들을 저장하라고 강요합니까? 데이터베이스 구조가 약간 부적절한 것 같은 느낌이 들었습니다 ... REPLACE mysql 명령을 사용하면 문제가 즉시 해결 될 수 있습니다. https://dev.mysql.com/doc /refman/5.0/en/replace.html –

+0

아무 것도 교체 할 필요가 없습니다. 존재에 대해 한 사람의 이름/성을 별도로 확인하는 것은 매우 이상한 설정입니다. 나는 단지 하나의 수표와 하나의 INSERT를하고 싶다. 데이터베이스가 제대로 구성되어 있습니다. 확신 할 수 있습니다. 단지 코드를 잘못 작성했기 때문입니다. –

+0

이름이나 성이 같은 사람이 2 명인 경우 (예 : (존 스미스, 존 제임스), (질 존스/샘 존스). 첫 번째 2 개의 검색어는 일치하는 항목을 찾고 어떤 행에 전체 이름을 삽입합니까? – Sean

답변

1

방금과 같이 키와 값의 두 그룹을 결합 할 수 있습니다 여러 열이있는 행을 삽입 :

INSERT INTO names_1 (firstname, lastname) VALUES ('John', 'Smith')

다른 대안은 고유 열로 데이터베이스 표시 이름 및 성 모두에 있습니다. 그런 다음 다음을 수행 할 수 있습니다.

INSERT INTO names_1 (firstname, lastname) VALUES ('John', 'Smith') ON DUPLICATE KEY UPDATE names_1 SET x="blah" WHERE blah

http://dev.mysql.com/doc/refman/5.6/en/insert-on-duplicate.html

+1

감사합니다. 정말 감사! –

+0

걱정할 필요가 없습니다! ;) 어떻게 든 배워야 해. –

0

이것은 당신이해야 할 밖으로 설정하는 무엇을 달성해야한다.

<?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"); 

$fullname = mysql_real_escape_string($_POST['firstname'] . " " . $_POST['lastname']); 
$query = "SELECT * FROM names_1 WHERE fullname='" . $fullname . "'"; 
$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 (firstname, lastname, fullname, age) VALUES('" .  $_POST['firstname'] . "','" . $_POST['lastname'] . "','" . $fullname . "'," . $_POST['age'] . ")"; 
    $result = mysql_query($query); 
} 


mysql_close($con); 
?> 

<html> 
    <head> 
     <link rel="stylesheet" href="Site.css"/> 
     <?php include("Header.php"); ?> 

    </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> 
관련 문제