2016-07-18 7 views
0

私はこのコードを簡単な検索mysqlデータが持っていますが、送信時にこのエラーが発生します。関数booleanのbind_param()ブール

Fatal error: Call to a member function bind_param() on boolean 

私は解決策の多くがあることを知っているが、私はここで

から来る問題は私のコードです場所を見つけるように見えることができません: -

$mysqli = new mysqli("localhost", "poke", "password", "pokedb"); 

    if (isset($_POST['poke_name'])) { 

    $query = "SELECT name,lat,long,pic,description FROM creature WHERE name LIKE ?"; 
    $param = "%{$_POST['poke_name']}%"; 

    $stmt = $mysqli->prepare($query); 
    $stmt->bind_param("s", $param); 
    $stmt->execute(); 
    $stmt->bind_result($name, $lat, $long, $pic, $description); 

     /* fetch values */ 
     while ($pokeinfo = $stmt->fetch_assoc()) { 
      $poke_info[] = $pokeinfo; 
     } 

     /* close statement */ 
     $mysqli->close(); 

    } 
+0

準備が失敗しました。準備によって返されるステータスをテストして、エコー '$ mysqli->エラー()' – RiggsFolly

+0

は今、それは私がこの受信おかしい: '致命的なエラーは:未定義のメソッドのmysqliのに呼び出し::エラーを()' – MuthaFury

+0

は申し訳ありませんが、それがあるべき答える見ます$ mysqli-> error 'no'() ' – RiggsFolly

答えて

0

ザ・が持って準備失敗しました。その後、あなたのクエリはこの方法を修正することができ$mysqli->error

$mysqli = new mysqli("localhost", "poke", "password", "pokedb"); 
/* check connection */ 
if ($mysqli->connect_errno) { 
    printf("Connect failed: %s\n", $mysqli->connect_error); 
    exit(); 
} 

if (isset($_POST['poke_name'])) { 

    $query = "SELECT name,lat,long,pic,description FROM creature WHERE name LIKE ?"; 
    $param = "%{$_POST['poke_name']}%"; 


    $stmt = $mysqli->prepare($query); 
    if ($stmt === false) { 
     echo $mysqli->error; 
     exit; 
    } 
+0

これは面白いです:致命的なエラー:定義されていないメソッドを呼び出すmysqli :: error() – MuthaFury

+0

その場合あなたの接続も間違っています – RiggsFolly

+0

更新後、私はこれを受け取りました 'あなたはSQL構文に誤りがあります。あなたのMySQLサーバのバージョンに対応するマニュアルをチェックして、適切な構文を使用して、近くにある「長い、写真、説明FROM creature WHERE name LIKE? 1行目で – MuthaFury

0

エコー用意してによって返されるステータスをテストします。

$query = "SELECT name,lat,long,pic,description FROM creature WHERE name LIKE '%?%'"; 
$param = $_POST['poke_name']; 

あなたはあなたのコードをデバッグする必要があります。これを試してみてください:

$stmt = $mysqli->prepare($query) or die($mysqli->error); 
var_dump($stmt); // Should return true if query executes 

を実行し、このphpmyadminの中で:

SELECT name,lat,long,pic,description FROM creature WHERE name LIKE '%a%'; 

これが正常に実行された場合には、準備されたPHPコードに何か問題があります。

+0

にキーワードをラップすることができます今、それは私がこれを受け取っ面白いです。あなたが今何を得ているのか教えてください。 SQL構文エラーがあれば表示されます。 – MuthaFury

+0

お奨めのエラー()>の代わりに$ mysqli-の$ mysqli->エラーを使用するか、バッククォート –

+0

明らかに質問の問題ですが、どこに問題があるのか​​わかりません。 – MuthaFury

関連する問題