2011-08-31 6 views
1

PHP와 MySQLi를 사용하여 준비된 문을 사용하는 스크립트가 있습니다. 그 목적은 MySQL 서버에 새로운 사용자를 생성하는 것이지만, 그 이유에 대한 더 이상의 정보없이이 명령문을 준비하는 것은 실패합니다.MySQLi 준비 문으로 사용자 만들기

$query = 'CREATE USER [email protected]`10.1.1.%` IDENTIFIED BY ?;'; 

if ($stmt = $newdb->prepare($query)) { 
$stmt->bind_param('ss', $db_username, $db_password); 

    if ($stmt->execute()) { 
    // Database user created successfully 
    } else { 
    die(errorJSON('db', 'create', 22)); 
} 

$stmt->close(); 
} else { 
    die(errorJSON('db', 'create', 3)); 
} 

왜이 문장을 왜곡하는 것은 실패할까요?

감사합니다.

+0

mysql에서 오류를 포함 시키십시오 - http://php.net/manual/en/mysqli.error.php – ajreal

+0

안녕하세요! 우리에게 조금 더 많은 정보를 주실 수 있습니까?이 스크립트는 어디서 실패 했습니까? 오류 유형 (php 또는 mysql)은 무엇입니까? 실패한 후 $ stmt-> error를 echo 할 때 어떤 결과가 나옵니까? –

+2

정확히 똑같은 문제가 발생했습니다. 그 문을 준비하는 것은 실패합니다. 이유는 무엇입니까? mysql> PREPARE stmt1 FROM 'CREATE USER? 에 의해 식별되는? '; ERROR 1064 (42000) : SQL 구문에 오류가 있습니다. MySQL 서버 버전에 해당하는 설명서를 확인하여 올바른 구문을 사용하여 '?' 신원 파악? 1 호선에서 – Erbureth

답변

1

쿼리의 성공/실패를 테스트 할 때 $stmt->error (그리고 선택적으로 $stmt->errno)을 인쇄해야합니다. 예를 들어 : - 내가 자신을보고 당신의 오류의 논리를 엉망으로 한 것 -

if ($stmt->execute()) { 
     // Database user created successfully 
    } else { 
     errorJSON('db', 'create', 22) 
     die($stmt->error); 
    } 

위의 아주 나쁜 예입니다하지만 당신은/오류 및 인쇄를 검색하여 로그인 할 방법이다.

+0

질문에 대한 답변이 아닙니다. – DarkSide