0
 <?php
 $soil_ph = $_POST['soilph'];
 $query = "select ph_id,ph_name,ph_from,ph_to from tbl_soilph 
 where '$soil_ph' between ph_from and ph_to";

 $result = mysql_query($query);

 while($row = mysql_fetch_array($result)) 
{
if ($row == 0)
{
echo 'Invalid or out of range';
}
else
{
$ph = $row['ph_name'];
echo $row['ph_name'];
}
}
?>  

---エコーが機能していません@($ row = 0)---誰かが私を助けてくれますか?上記のコードは正常に機能し、結果が得られますが、データがない場合、「無効な入力」というメッセージが表示されませんか?

4

4 に答える 4

2

まず第一に、変数をデータベース クエリで使用する前に、必ず変数をエスケープする必要があります (準備済みステートメントを使用する場合を除きます)。

$soil_ph = $_POST['soilph'];
$query = "SELECT ph_id, ph_name, ph_from, ph_to 
    FROM tbl_soilph 
    WHERE '" . mysql_real_escape_string($soil_ph) . "' BETWEEN ph_from AND ph_to";

$result = mysql_query($query);

結果があるかどうかを調べるにはmysql_num_rows()、クエリが失敗していないことを確認してから使用する必要があります。

if ($result && mysql_num_rows($result)) {
    while ($row = mysql_fetch_array($result)) {
        // do your stuff
    }
} else {
    // aww, nothing there
}

さらに読む: MySQLiPDO

于 2012-11-16T06:15:15.970 に答える
0
$soil_ph = $_POST['soilph'];
$query = "select ph_id,ph_name,ph_from,ph_to from tbl_soilph 
where '$soil_ph' between ph_from and ph_to";

$result = mysql_query($query);
if($result && mysql_num_rows($result)) {

 while() {

 }
} else {
  echo 'invalid input';
}
于 2012-11-16T05:56:08.843 に答える
0

このコードを確認してください。ループの方法が変更されています

if (mysql_num_rows($result) < 1) {

    echo 'Invalid or out of range';

}else{

     while($row = mysql_fetch_array($result)){

         $ph = $row['ph_name'];
         echo $row['ph_name'];
     }
}
于 2012-11-16T06:06:16.240 に答える
-1

実際には、mysql_fetch_array 関数は実行のたびに 1 つの次元配列を返します。次のようにできます。

if($results){
echo 'No Results';
}else{
while($row = mysql_fetch_array($result)) 
{
if(!empty($row)){ 
echo $row['ph_name'];
}else{
echo 'invalid';
}
}
于 2012-11-16T04:51:34.753 に答える