2014-10-12 2 views
0

사용자의 로그인 이름,받는 사람 이름 및 메시지 내용을 가져 와서 SQL 데이터베이스에 쓰는 간단한 PHP 시스템을 만들려고했습니다. 나는 메시지를 보내고 페이지를 새로 고친 후에도 오류가 전혀없는 지점에 있습니다. 그러나 새로운 항목이 내 SQL 데이터베이스에 표시되지 않습니다 (phpMyAdmin을 통해 확인). 그런데이 코드는 모두 같은 페이지에 있습니다.SQL 데이터베이스에 변수를 쓸 수 없습니다.

가 수집하는 HTML 양식을 시작은 데이터 :

다음
<form name="login" action="" method="POST"> 
<p>Recipient: <input type="text" name="recipient"/></p> 
<p>Message: <input type="text" name="contents"/></p> 
<input type="Submit" Name="submit" value="Send"/> 
</form> 

I 설치 SQL 데이터베이스에 연결 :

<?php 
$link = mysqli_connect('host','username','password','database'); 
$sqlaction = 'INSERT INTO $userinbox (Sender, Message) VALUES ($email, $username)'; 
?> 

그런 다음 데이터베이스에 정보를 입력하는 기능 :

<?php 

session_start(); 

function message($link, $sqlaction) 
{ 
$sender = $_SESSION['name']; 
$recipient = strtolower($_POST['recipient']); 
$contents = $_POST['contents']; 

switch ($recipient) { 
    case 'person1': 
     $userinbox = 'person1'; 
     $result = mysqli_query($link, $sqlaction); 
     echo 'Message sent.'; 
     break; 
    case 'person2': 
     $userinbox = 'person2'; 
     $result = mysqli_query($link, $sqlaction); 
     echo 'Message sent.'; 
     break; 
    case 'person3': 
     $userinbox = 'person3'; 
     $result = mysqli_query($link, $sqlaction); 
     echo 'Message sent.'; 
     break; 
    case 'person4': 
     $userinbox = 'person4'; 
     $result = mysqli_query($link, $sqlaction); 
     echo 'Message sent.'; 
     break; 
    default: 
     echo 'Current valid users are list of users'; 
} 
} 

마지막으로 데이터베이스 연결을 전달하는 함수를 호출합니다. varia bles :

하지만 말한 것처럼 아무 것도 데이터베이스에 표시되지 않습니다. 나는 이것을 디버깅하는 데 4 일을 보냈으며 포기할 직전에있다. 어떤 도움이라도 대단히 감사하겠습니다.

+0

팁을 말했다 @devaldcool 일 같은 것을 받게됩니다

error_reporing(E_ALL); 

을 reporing 사용하는 경우 : 각 사용자의받은 편지함에 대해 별도의 테이블이 필요하지 않습니다. 그냥받은 편지함이라는 테이블을 만들고 user_id, owner_id 등의 필드를 추가하십시오. 그런 다음 동일한 테이블에 저장된 모든 항목을 사용하여 spesific 사용자받은 편지함의 콘텐츠를 가져올 수 있습니다. 이유는 10.000 (100 명)의 사용자가 생기면 DB가 엉망으로 보일 것입니다. – JimL

답변

1

이 아닌 "$email"과 같이 문자열을 삽입하려면 따옴표를 사용해야합니다. 또한 역 따옴표 즉 this-> 테이블 이름을 탈출해야한다`당신의 SQL 쿼리 이렇게 될 것입니다 : - 숫자 (정수, 두 배 값, 소수 등) 따옴표 선택적입니다

$sqlaction = "INSERT INTO `$userinbox` (Sender, Message) VALUES ('$email','$username')"; 

참고. 도움이된다면 accept an answer을 확인하십시오.

+0

내가 backticks를 써야한다는 것을 몰랐다. 그러나 나는 아직도 내 데이터베이스에 어떤 입력을 받고 있지 않다. 나는 그걸 가지고 놀고 내가 일하도록 할 수 있는지 알아볼 것이다. 당신의 도움을 주셔서 감사합니다. – user4106283

+0

어떤 오류가 발생합니까? – khandelwaldeval

+0

오류가 없습니다. 'error_reporing (E_ALL); 시도했습니다.' 아래에 말한대로하지만 그건 그냥 내게 정의되지 않은 함수에 대한 구문 오류를 제공합니다. 메시지를 제출하려고하면 데이터베이스에 빈 항목이 생깁니다. 그러나 여러 메시지를 제출하려고해도 여전히 하나의 빈 항목 만 얻습니다. 아예 내 전체 코드로 연결 : http://pastebin.com/a2VAx0Uc – user4106283

0

당신은

$email and $username 

이 코드에 정의가 없습니다. 당신이 오류는 또한

Notice: undefined variable $email on line xxx in file.php 
Notice: undefined variable $username on line xxx in file.php 

관련 문제