2011-07-19 1 views
0
$firstName = $_POST['firstName']; 
$sql = "SELECT firstName FROM `colleague` WHERE `lastName` 
    LIKE '%{$firstName}%' LIMIT 0, 5 "; 
$result = mysql_query($sql); 

と間違って何なぜ、この作品はそれが行を選択していないと私はPHPの変数を持つLIKE文の私の使用

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

$output[] = $row; 
    echo $output; 

} 

を使用する場合はnullを印刷し、「アレイ」はありません回

の繰り返し数は、これは私のアンドロイドのプログラムです

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
nameValuePairs.add(new BasicNameValuePair("firstName",value)); 
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
HttpResponse response = httpclient.execute(httppost); 

私は$ _POST [「firstNameの」]には何も受信しません。

+0

実際、$行は、は、mysql_fetch_array –

+0

'$ hotelName = $ _POST [のfirstName]'のおかげで配列され、http://docs.php.net/language.typesを見てください.array#language.types.array.donts – VolkerK

+0

"$ hotelName = $ _POST [firstName]; ... SELECT firstName ... where 'lastName' LIKE'%{$ hotelName}% '"あなたの "コンベンション "...または何とか何とか何かを得ることを望んでいるコード・フラグメントを盲目的にコピーしています;-) – VolkerK

答えて

1

PHPコードにはいくつかの誤りがあります。

  1. SQLは注入可能であり、セキュリティ上のリスクは直接的です。それは話題にはなりませんので、ここでは修正していません。
  2. アレイをエコーし​​ようとしています(echo $output)。配列をエコーすることはできません。単に '配列'を出力します。

次のレビューコードを参照してください。


// ADDED QUOTES. TODO: Implement SQL injection prevention here! 
$hotelName = $_POST['firstName']; 

// The {brackets} here, while valid, were unnecessary. 
$sql = "SELECT firstName FROM `colleague` WHERE `lastName` 
    LIKE '%$hotelName%' LIMIT 0, 5 "; 
$result = mysql_query($sql); 

// Fetch all rows, and store first names in array $output 
while($row = mysql_fetch_array($result)) $output[] = $row['firstName']; 

// Echo all first names with line breaks in between. 
echo implode("<br/>",$output); 
+0

あなたはどんなことを指していますか? SQLインジェクション保護を参照する場合は、パラメータ化されたクエリに関する情報を検索してください。 PHPでは、特に、mysql _....関数のOOP代替である[PDO](http://php.net/manual/en/book.pdo.php)を見てください。現在のコードを簡単に修正するには、[mysql_real_escape_string](http://php.net/manual/en/function.mysql-real-escape-string.php)を参照してください。 –

0

それはあなたが知っているどのように

行を選択していません - あなたは結果セットから行をフェッチし始めるまで?

、私が使用している場合...これはむしろそれが行を選択された意味倍

のヌルと「アレイ」を繰り返す数を出力します。あなたがデータを見たい場合は、また、例えば、いくつかのエラー処理を追加する必要があります...

print implode(',',$row); 

代わりの

echo $output; 

を試し返さ

$result = mysql_query($sql); 
if (!$result) { 
    print mysql_error(); 
    exit; 
} 
関連する問題