2013-10-22 5 views
0

몇 시간 동안 스크립트의 다양한 예제를 통해 표류하고 거의 모든 것을 시도한 후에는 대답을 찾고있는 동안 원격으로 이해할 수 있습니다. 나는 더 지능적인 자비를 다시 한번 느낍니다. 내 데이터베이스 테이블에서 이름을 반환하기 만하면됩니다. 이게 너무 힘들어, 저 한테 YEP처럼 보입니다. 누군가 나를 똑바로 세워 줘. 나는 모든 오류를 분류했으며 현재 아무 것도 얻지 못하고있다. 문제는 내 생각이다., 반환 결과 문장에있다. 여기 내 코드는 다음과 같습니다.Cant는 준비된 진술에서 결과를 반환합니다.

<?php 
//connect to database 
$mysqli = new mysqli('localhost', 'fiona', 'imB04', 'Org_db'); 

// check connection 
    if (mysqli_connect_errno()) { 
     echo "Connect failed: " . mysqli_connect_errno(); exit(); 
    } 

//Prepared statement, bind and execute 
    if (!$stmt = $mysqli->prepare("SELECT `name` FROM users WHERE name = ?")) { 
    echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error; 
} 
//bind parametres 
if (!$stmt->bind_param("i", $name)) { 
    echo "Binding param failed: (" . $stmt->errno . ") " . $stmt->error; 
//execute query or return error 
} 
if (!$stmt->execute()) { 
    echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error; 
} 
//bind result variable 
if (!$stmt->bind_result($name)) { 
    echo "bind result failed: (" . $stmt->errno . ") " . $stmt->error; 
} 
    if ($result = $mysqli->prepare("SELECT `name` FROM users WHERE name = ?")) { 
while ($row = $result->fetch_array()) 
{ 
echo $result['name']; 
} 
    } 

//Close statement 
     $stmt -> close(); 
//Close connection 
    $mysqli -> close(); 

?> 
+0

글쎄,이 엉망을 제거하고 ** 매뉴얼 페이지에서 * 깨끗한 * 예제를 시도해 보지 않겠습니까? ** –

+0

수동 예제를 사용하여 얻은 것은 Name = (NULL)이었습니다. 그럴 권리는 없습니다 – user2042111

+0

어쨌든 수동 예제를 시도해야합니다. 단지 당신의 현재의 cide가 매우 일치하지 않기 때문입니다. 왜 쿼리를 두 번 * 실행하고 있습니까? –

답변

-1

이 코드를 사용해보세요. 그러나 오류 검사에서 맨 위로 갔다고 생각합니다. 이 선택 항목에 오류를 확인하기 위해 다른 항목을 추가 할 수 있습니다. $ db를 데이터베이스가 호출되는 곳으로 변경하십시오.

$query = "SELECT `name` FROM `users` WHERE `name`=?"; 
    $stmt = $db->prepare($query); 
    $stmt->bind_param('s',$name); 
    $stmt->execute(); 
    $stmt->bind_result($name); 

    if($stmt->fetch()) 
    { 
     echo $name; 
    } 
    $stmt->close(); 

또한 이름을 검색을 위해 나는이 이름과 성을 찾고의 예입니다이

<snip> 
"WHERE CONCAT(`firstname`, ' ',`lastname`) LIKE CONCAT('%', ?, '%')"; 
$stmt->bind_param('s',$name); 
<snip> 

을 사용합니다. 연결을 사용하는 경우에는 이름의 일부만 있거나 이름이나 성이있는 경우에는 중요하지 않습니다.

관련 문제