2013-06-29 2 views
0

안녕하십니까. 뉴스 레터 신청을 위해 MySQL 데이터베이스에 페이지를 연결하려고합니다. ID, 이름, 이메일 등 3 개의 필드가있는 데이터베이스가 있습니다. 데이터베이스의 이름은 newsletter이고 테이블의 이름은 newsletter입니다. 모든 것이 잘 될 것 같다하지만 난이 오류를 얻고있다데이터베이스 오류에 양식 연결

공지 사항 : 정의되지 않은 인덱스 이름 C의 : \ WAMP \ www가 \ insert.php에 라인 (12) 공지 사항 : 정의되지 않은 인덱스 이름 C의 : \ WAMP \ www \ insert.php on line 13

여기 내 양식 코드가 있습니다.

다음은 내 insert.php 파일입니다.

<?php 
$host="localhost"; // Host name 
$username="root"; // Mysql username 
$password=""; // Mysql password 
$db_name="newsletter"; // Database name 
$tbl_name="newsletter"; // Table name 
// Connect to server and select database. 
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 

// Get values from form 
$name=$_POST['Name']; 
$email=$_POST['Email']; 

// Insert data into mysql 
$sql="INSERT INTO $tbl_name(name, email)VALUES('$name', '$email')"; 
$result=mysql_query($sql); 

// if successfully insert data into database, displays message "Successful". 
if($result){ 
echo "Successful"; 
echo "<BR>"; 
echo "<a href='index.html'>Back to main page</a>"; 
} 

else { 
echo "ERROR"; 
} 
?> 

<?php 
// close connection 
mysql_close(); 
?> 
+0

'insert.php' 파일을 표시하십시오. – dimaninc

+0

PHP 파일, 특히 문제가있는 행을 포함하도록 게시물을 편집하십시오. 또한 테이블에 인덱스를 사용하고 있습니까? –

+0

오류는 insert.php 파일 안에 있습니다. 문제를 찾으려면 코드를 확인해야합니다. – MrByte

답변

0

에러 인덱스가 Name$_POST[] 배열에서 발견되지 나타낸다. 그것은 PHP 통지이며 표시 중지 오류가 아니라 오히려 존재하지 않는 값을 참조하고 있음을 알리기위한 것입니다. 이 값이 하늘 또는 공백 일 가능성이 있다고 통상/상정하고있는 경우는, 통지를 안전하게 무시할 수 있습니다. 그것이 mysql_connect()에 호출에서

  • :

    $name = mysql_real_escape_string($_POST['Name']); 
    $email = mysql_real_escape_string($_POST['Email']); 
    

    다른 몇 가지주의 사항 :이 문제를 넘어서

    , 당신은 이전의 SQL 문 내에서 예를 참조 공공 값을 살균한다 변수 $host, $username 또는 $password을 따옴표로 묶을 필요는 없습니다. mysql_select_db()으로 전화하면 $db_name 일 때도 마찬가지입니다. 위의 줄에 이미 정의 된 문자열이므로 너무 큽니다.

  • 아마도 $_POST[]의 값에 대한 일부 유효성 검사는 SQL 쿼리 이전에 좋은 아이디어일까요? 이 방법을 사용하면 예를 들어 Name 값이 비어있는 경우 오류를 출력 할 수 있습니다.

관련 문제