2017-11-01 3 views
-1

PHPでプリペアドステートメントを使用して特定の項目のテーブルを検索しようとしています。私はエラーは発生していませんが、レコードを取得していません。ここに私のコードは次のとおりです。PHP bind_paramがパラメータをバインドしていません

$items = []; 
$search = "john"; 
if ($stmt = $this->con->prepare("SELECT * FROM phptest WHERE search = ?")) { //'john'"; 
    $stmt->bind_param("s",$search); 
    $stmt->execute(); 
    while ($row = mysqli_fetch_array($stmt)) { 
     $item = []; 
     $item['id'] = $row['id']; 
     $item['first'] = $row['search']; 
     $item['last'] = $row['data']; 
     array_push($items, $item); 
    } 
} 
return $items; 

さて、私はないときはプリペアドステートメントを使用して、ちょうどSELECT * FROM phptest私が(アイテム検索= 'ジョンを含む)テーブル内のすべての結果を取得します。さらに、クエリSELECT * FROM phptest WHERE search = 'john'を使用すると、検索= 'john'のレコードが1つ取得されます

ただし、準備済みの文に変換するとエラーは発生しますが、レコードはゼロになります。それは、

mysqli_fetch_array()は、パラメータ1をmysqli_resultことを期待し、私は私のbind_paramまたは​​はfalseを返すいたと思い作っ

、指定したbooleanが、私が確認したときに:私は警告を取得を行う偽を返すようには見えません。

チュートリアルhttps://www.simplifiedcoding.net/android-mysql-tutorial-to-perform-basic-crud-operation/を使って私の冒険を始めました。私は完全に理解していると思っていましたが、私自身のPHP APIを作るときに私のエラーに遭遇しました。

私はマニュアルhttp://php.net/manual/fr/mysqli.prepare.phpに行きましたが、それでも私のエラーは見つかりませんでした。

「オフトピック」として閉鎖されていますが、私はPHP bind_param not workingを見直し、私の状況には何も適用されません。

同様に、私はPHP bind_param not definedでもphp bind_param is not workingでもエラーが見つかりません。

+0

を私は、今、混乱していますmysqli_fetch_arrayの手続き型スタイルを使用しています... – IncredibleHat

答えて

3

あなたはとても近くです。

$stmt = $conn->prepare(...); 
$stmt->bind_param(...); 
$stmt->execute(); 
$result = $stmt->get_result(); 
while ($row = mysqli_fetch_array($result)) { 

それとも、完全にオブジェクト指向的に:mysqli_fetch_array()結果オブジェクトではなく、文オブジェクト自体渡されることを期待するあなたがオブジェクト指向のセットアップを持っているので、

while ($row = $result->fetch_array()) { 
+0

「$ this-> con-> prepare」を '$ this-> con-> query'に変更することで直接テストしたときに、 $ stmtを結果オブジェクトとし、準備されたオブジェクトとはしません。 – IncredibleHat

+0

'execute'は' mysqli_result'ではなくブール値を返します。 – Barmar

+0

これはmysqliですか?私はそれがPDO笑だと思った...ああ、うーん。じゃあ! – IncredibleHat

関連する問題