1

次のような簡単なクエリを取得しました。

$con = mysqli_connect("host","username","password","default_database");

if(mysqli_connect_errno($con))
{
    mysqli_connect_error();
}
else
{
    $query = "SELECT * FROM `users_t`";
    $result = mysqli_query($query) or die (mysql_error());
    while($row = mysqli_fetch_assoc($result))
    {
        echo $row['email'];
    }

}

このクエリを実行しても、まったく何も得られません。エラーはありませんが、同時に結果はありません。何が悪いのかわからないので、助けてください。

4

3 に答える 3

2

ここでいくつかのことが起こっているようです。

  1. mysqli_connect_errno()のドキュメントによると、ステートメント!$conではなくチェックする必要がありmysqli_connect_errno($con)ます。if
  2. 接続エラーが発生した場合、エラー関数を呼び出していますが、出力はしていません。
  3. mysqli_query()のドキュメントによると、最初の引数はデータベース接続であり、2番目の引数はクエリ自体です。
  4. クエリがエラーになると、mysql_error()必要なときに呼び出しmysqli_error()て、接続を渡します。繰り返しますが、ドキュメントによると

これを試して、これで問題が解決するかどうかを確認してください。

<?php
$con = mysqli_connect("host","username","password","default_database");

if(!$con) {
  print mysqli_connect_error();
} else {
  $query = "SELECT * FROM `users_t`";
  $result = mysqli_query($con, $query) or die (mysqli_error($con));
  while($row = mysqli_fetch_assoc($result)) {
    echo $row['email'];
  }
}
于 2013-03-21T14:50:45.787 に答える
0
$result = mysqli_query($query) or die (mysql_error());

mysqliリソースリンクが必要ですが、そうではありませんmysql_error()

if ($result = mysqli_query($con,$query))
{
while($row = mysqli_fetch_assoc($result))
    {
        echo $row['email'];
    } 
}
于 2013-03-21T14:50:26.667 に答える
0

EmailPHPでは大文字と小文字が区別されるため、データベース内の列に実際に名前が付けられ、チェックすると結果が表示されないという非常に優れた変更があります。これは大文字である必要がある$row['email']ためEです。

あなたができることは、PHPで正しい大文字小文字を使用するか、必要なフィールドだけを選択することです。MYSQLは大文字と小文字を区別しないため、次の手順を実行すると機能します。

また、適切なケースがあるかどうかを確認するための良い方法です。使用してくださいvar_dump($row)(表示のためにコードに追加しました)

$con = mysqli_connect("host","username","password","default_database");

if(mysqli_connect_errno($con))
{
    mysqli_connect_error();
}
else
{
    $query = "SELECT email FROM `users_t`";
    $result = mysqli_query($query) or die (mysql_error());
    while($row = mysqli_fetch_assoc($result))
    {
        echo $row['email'];
        var_dump($row);
    }

}
于 2013-03-21T15:00:27.230 に答える