2017-04-20 12 views
0

私は3つの列nEspe2、nEspe3、nEspe4を持つデータベースを持っています。クエリは正常に動作し、$ result2はTRUE(1)です。PHP mysqli_fetch_arrayがNULLを返しています

mysqli_resultオブジェクト([current_field] => 0 [FIELD_COUNT] => 3 [長さ] => [NUM_ROWS] => 1 [タイプ]:私は$結果2を印刷するとき、iが得られる結果は次のようです=> 0)

私が使用するコードは次です:

$queryEspecialidad = "SELECT nEspe2, nEspe3, nEspe4 FROM namesEspe WHERE nEspe1 = '$especialidad'"; 
if(($result2 = mysqli_query($conn,$queryEspecialidad))!= FALSE) 
{ 
      print_r($result2); 
      echo "QueryEspecialidad realizada correctamente<br>"; 
      $row2 = mysqli_fetch_array($result2); 
      if($row2 == NULL){echo "Se obtiene NULL de row2XXXXXXXXXXXXXXXXXXXXXXX<br>";} 
...<more code>... 
} 

$ ROW2は常にNULLです。私はmysqli_fetch_rowも同じ問題で試しました。各クエリは、3つの列で1行のみを返します(一部の列は空白になることがあります)。

+0

SQLインジェクションを防ぐ準備文について学ぶ – Jens

+0

mysqli_fetch_all()をテストとして使ってみてください - それは1つの行を返すかどうかですか?また、 'mysqli_data_seek($ result2、0)'を使って最初の行を何とかスキップしないようにしてください。 –

答えて

0

問題が見つかりました。 SELECTに `` 'やそれに類似したアクセントがついているときに、それが起こります。 NavyCatは正常に動作しますが、SELECTがPHPから作成された場合、クエリは失敗します。

1

まずブール値(およびNULL)の比較では、===!==を使用することをお勧めします。そうでなければ例えば。整数1は、trueにも等しくなります。

@Vipul 第2に、mysqli_fetch_arrayは、行が残っていない場合はNULLを返します。そのため、OPはそのステートメントで正しく機能します。

とにかく、私はあなたの設定をローカルで再現し、すべてが期待どおりに実行され、 "Se obtiene NULL de ...."は表示されませんでした。私にとって、あなたは何とか最初の行だけをスキップするように見えます。

+0

あなたは正しいです。ブール比較についての利点もありがとう。問題はアクセントだった。そのため、クエリは機能しませんでした。 – Asier

関連する問題