1

管理者の PHP から直接このクエリを実行すると、5 つの結果が得られました。

SELECT img FROM `table`.`goog` WHERE `url` LIKE '%google.com%' and `pictureID` != 'picture_50d22657a423b6.62354164'; 

ただし、私のコードが

$sql2 = "SELECT img FROM `table`.`goog` WHERE `url` LIKE '%$url%' and `pictureID` != '$pictureID';";
    // echo $sql2;
$result2=mysql_query($sql2);
$rows2 = mysql_fetch_array($result2);

mysql_close($con);

print_r(count($rows2));

echo "<br/>";

echo $sql2;

それは印刷されます

2 
SELECT img FROM `ashkan`.`goog` WHERE `url` LIKE '%66.228.42.45%' and `pictureID` != 'picture_50d22657a423b6.62354164';

管理者のphp内で実行するクエリは、コードが返すものからコピーされていることにも注意してください..

では、なぜ 1 つは 2 項目しか返さず、もう 1 つは 5 項目を返すのでしょうか?

編集

一番下に以下を追加しました

var_dump($rows2);
echo "<br/>";
echo mysql_num_rows($result2);

そしてこれを手に入れた

array(2) { [0]=> string(1) "b" ["img"]=> string(1) "b" } 
5 

行を手動で選択するものがあります

本質的に私はできるようになりたい

echo $rows2[somenum]; //that some number is at random and only one at a time

ただし、そのままでは、アイテム 0 にしかアクセスできず、5 つすべてにはアクセスできません。

4

4 に答える 4

1

更新されたコード

更新されたコードは次のとおりです。

$mysqlQuery=mysql_query("SELECT img FROM `table`.`goog` WHERE `url` LIKE '%$url%' and `pictureID` != '$pictureID");
$databaseArray=array();

while($arrayQuery=mysql_fetch_array($mysqlQuery))
{
    $imageName=$arrayQuery['img'];
    
    $databaseArray[]=$imageName;
}

echo "Database returned ".count($databaseArray)." rows.";

print_r($databaseArray);

echo $databaseArray[0]; // prints image name row 1
echo $databaseArray[1]; // prints image name row 2
echo $databaseArray[2]; // prints image name row 3
// etc etc etc

古いコード

これを行う:

$sql2 = "SELECT img FROM `table`.`goog` WHERE `url` LIKE '%$url%' and `pictureID` != '$pictureID';";
    // echo $sql2;
$result2=mysql_query($sql2);

while($data = mysql_fetch_array($result2))
{
    var_dump($data);
}

mysql_fetch_arrayは、一度に1行のみを返します。上記のコードは、データベースで見つかったすべての行をループします。行のみをカウントする場合は、mysql_num_rows()関数を確認してください。

また、非推奨になっているため、mysql_*ではなくmysqli_*を使用する必要があります。詳細については、http: //php.net/manual/en/book.mysqli.phpをご覧ください。

于 2012-12-19T20:55:05.777 に答える
1

以下を使用して:

print_r(count($rows2));

この行の配列キーの数を数えるだけです

代わりにこれを行う必要があります:

echo mysql_num_rows($result2);

于 2012-12-19T20:57:42.027 に答える
1

mysql_fetch_array()結果セットから 1 行のみをフェッチし、ポインターを 1 つ前に移動します。

クエリが返す行数が必要な場合は、次を使用しますmysql_num_rows()

echo mysql_num_rows($result2);
于 2012-12-19T20:54:07.047 に答える
0

結果を繰り返す必要があります。

$sql2 = "SELECT img FROM `table`.`goog` WHERE `url` LIKE '%$url%' and `pictureID` != '$pictureID';";
    // echo $sql2;
$result2=mysql_query($sql2);

// iterate over the results
while($row = mysql_fetch_assoc($result2)) {
    print_r($row); 
}

mysql_close($con);
于 2012-12-19T20:55:17.640 に答える