2012-12-27 2 views
0
//Successful connection to $db 

function insert_users($db, $username, $password, $email) 
{ 
    echo "FUNCTION CALLED"; //This is outputted successfully 

    $query = "INSERT INTO `users` (`id`, `username`, `password`, `email`) VALUES ('', ?, ?, ?)"; 
    $stmt = mysqli_stmt_init($db); 

    if(mysqli_stmt_prepare($stmt, $query)) 
    { 
     echo "QUERY PREPARED"; // rest of code was snipped (will put up upon request) 
    } else { 
     echo "QUERY DENIED"; //This is outputted successfully 
    } 
} 


//The $user $pass and $mail are defined and then the function is called 

insert_users($db, $user, $pass, $mail); 

데이터베이스 구조 : MySQLi 절차 쿼리, 뭐가 잘못 되었나요?

testdb (database) 
    -> users (table) 
     -> id   //Primary key, unique key 
     -> username  //unique key 
     -> password 
     -> email 

왜 쿼리가 함께 통과 넣은 사람은 아니다 작동입니까? "Query prepared"대신 "Query denied"를 표시합니다. 나는 믿을 수없는 쿼리입니다. 자세한 정보가 필요한 경우, 병이 질문에

내가 아무 일도 발생하지 않는 echo "QUERY DENIED";

mysqli_stmt_error($stmt);을 추가

편집 ...

편집 2

를 편집 할 행복
$server = 'localhost'; 
$user = 'root'; 
$password = ''; 
$databse = 'testdb'; 

$db = @mysqli_connect($server, $user, $password, $database) or die("Could not connect to Database server. Please inform an administrator"); 

그건 내 데이터베이스 설정이야. 변수를 따옴표로 묶어야합니까? id는 AUTO_INCREMENT 컬럼 인 경우

+0

을 제시해주십시오 ['mysqli_stmt_error'] (http://php.net/manual/en/mysqli-stmt.error.php), 실패합니다. –

+0

빈 문자열을 기본 키 열에 삽입하려고합니다. 그것은 당신의 시나리오에서 합법적입니까? PK 자동 증가입니까? –

+0

@Olaf Dietsche 좋아, 할 것이다 : – Wulf

답변

2

, 당신은 단지 당신은 $databse = 'testdb';에 오타가 당신의 삽입

INSERT INTO `users` (`username`, `password`, `email`) VALUES (?, ?, ?) 

에서 삭제할 수 있습니다. 이름을 $database으로 바꿉니다.

+0

나는 이것을 시험해보고, 감사 할 것이다 – Wulf

+0

나는 우스운 실수에 부끄럽다. (대단히 감사합니다 (모두)). – Wulf

+0

원본 쿼리에서'' ''를 삽입하는 대신 (NULL,?,?,?) ' –

2

항상 빈 문자열을 기본 키 (id)로 입력하려고하기 때문에 그럴 것이라고 생각합니다. 해당 필드가 자동 증가 필드 인 경우 값을 설정하려고 시도하지 않아야합니다. 준비 당신의

$query = "INSERT INTO `users` (`username`, `password`, `email`) VALUES (?, ?, ?)"; 
+0

"QUERY DENIED"가 표시됩니다. – Wulf

관련 문제