2017-07-16 13 views
-1

この奇妙な問題を助けることができる人がいたら助かります。PHP MySQLI - テーブルカウントが0で終わる

私の問題は、テーブルのレコードを数えると0を返します。

phpMyAdminで同じSQLIクエリを使用すると、正しい番号が得られます。

また、すべてのレコードを読み取ることができるので、接続は問題ありません。 私はmysqli_stmt_bind_paramのコメントアウトのように多くのことを試してきました。数字と文字列の間で変更しました。また、 "while"ループがなくても戻り値は1つしかありませんでした。

誰も私がこのコードで間違っていることを教えてもらえますか?

$prep_stmt = "SELECT COUNT (*) FROM gps"; 
$stmt = mysqli_prepare ($mysqli, $prep_stmt); 
mysqli_stmt_bind_param ($stmt, 'i'); 
mysqli_stmt_execute($stmt); 

mysqli_stmt_bind_result($stmt, $gps_pos); 

while (mysqli_stmt_fetch($stmt)){ 
    $format = "Antal GPS Positioner: %d \n"; 
    printf($format, $gps_pos); 
} 
+1

バウンド何もないので、あなたはプレースホルダを使用していませんでした。あなたはそれについて間違いを起こしているはずです。マニュアルのhttp://php.net/manual/en/mysqli-stmt.bind-param.phpを見て、 'COUNT(*)' => 'COUNT(*)'のスペースを削除してみてください。 –

+0

すべての列に単一の整数をバインドしようとしましたが、おそらく(別の理由で)なぜ失敗しているのでしょうか。 –

+0

$ prep_stmt = "SELECT COUNT(*)をgpsから数えて"; それからカウントされます。 –

答えて

0

は、すべての分のバインディングを忘れて、このようなあなたのクエリを実行してみてください。

$query = "SELECT COUNT (*) as counted FROM gps"; 
$result = mysqli_query($dbc, $query); 
$num = mysqli_num_rows ($result); 

if ($num > 0) 
{ 
while($row = mysqli_fetch_assoc($result)) 
    { 
    $Counted = $row['Counted']; 
    $format = "Antal GPS Positioner: %d \n"; 
    printf($format, $Counted) 
    } 
} 
+0

申し訳ありませんが、幸運にも、エラーメッセージも表示されません。また、別のサイトで見つけたものから1つの例を試してみました。 私の最善の解決策はこれまでのところ、「SELECT * From table」という通常のクエリを実行し、フェッチされた各行に対してカウンタを使用して、必要のないデータを破棄することです。 :-) – RAJensen

+0

変更 "$ Counted = $ row ['Counted'];" "$ Counted = $ row ['counted'];"小文字にする必要があります。これをすべて理解できない場合は、何か問題があります。 $ dbcの下にもデータベース接続があります。 –

+0

私は大文字/小文字の誤認を見ました。私は接続が大丈夫であることを知っています、私はそれを使用するので、私はデータベースから読み込みを行います。 うまくいかなかったら、カウンターを使うことができませんでした。 :-) – RAJensen