2012-09-12 1 views
-1

를 읽고 여기에 코드는 mysqli 시작하고 치명적인 오류

require_once 'functions.php'; 
require_once 'cfg.php'; 
$mysqli = new mysqli($dbhost, $dbuser, $dbpass, $db); 
if ($mysqli->connect_error) { 
    die('Connect Error (' . $mysqli->connect_errno . ') '. $mysqli->connect_error); 
} 
$query='SELECT * FROM cobra'; 
$result=$mysqli->prepare($query); 
$result->execute(); 
$result->close(); 
echo array_values($result); 

나는 오류가 발생한 후 오류가 발생하고이다 지. 처음에는 함수에 쿼리 부분을 포함 시켰지만 $ mysqli의 변수 범위를 사용하여 모든 종류의 문제를 해결했습니다.

가장 최근의 오류는 다음과 같습니다 치명적인 오류 : 11

라인 (11)은 라인에 ... 코브라/lib 디렉토리/distro.php가 아닌 객체() 실행 멤버 함수를 호출합니다 :

$result->execute(); 

나는 이것에 대해 다른 방법에 대한 배경 지식을 원합니다. 내가 할 수있는 모든 것을 배우지 만 마감일에 곧 다가 가고 있습니다. 도와주세요.

+4

'mysqli :: prepare' 결과가 false입니까? 그렇다면 [mysqli :: error] (http://www.php.net/manual/en/mysqli.error.php)가 무엇을 리턴하는지보십시오. –

+0

잘 도움이되었습니다. 내가 잘못된 유형의 객체와 변수에 대해 메소드를 시도하고있다! 적어도 나는 지금해야할 일을 안다. –

답변

0

당신은 $result 유효한 mysqli_stmt 객체인지 확인해야합니다.

$query='SELECT * FROM cobra'; 
$result=$mysqli->prepare($query); 
if ($result instanceof mysqli_stmt) { 
    $result->execute(); 
} else { 
    // determine what went wrong 
    echo $mysqli->error; 
} 
1

준비에는 명령문 핸들이 반환되지 않지만 준비가 예상대로 실행되지 않았 음을 나타내는 false가 반환됩니다.

이 작업을 시도 할 수 :

$mysqli = new mysqli($dbhost, $dbuser, $dbpass, $db); 
if ($mysqli->connect_error) { 
    die('Connect Error (' . $mysqli->connect_errno . ') '. $mysqli->connect_error); 
} 
$query =' SELECT * FROM cobra'; 
$stmt = $mysqli->prepare($query); 
if (!$stmt) 
    die($mysqli->error); 

$stmt->execute(); 

echo array_values($stmt->fetch()); 

$stmt->close(); 
+0

끝에 $ result를 사용하지만 정의되어 있지 않습니다. 왜 그런가요? –

+0

오타가 있었고, 지금 바로 수정했습니다 – JvdBerg

+0

Your $ stmt = $ mysqli-> prepare ($ query); my $ result = $ mysqli-> prepare ($ query)와 같습니다. –