2016-04-15 23 views
0
<?php 
include 'connect.php'; 
$query = "SELECT * FROM (
SELECT CONCAT(customer_name, ' ', address, ' ', street, ' ', phone_1, ' ', phone_2, ' ', phone_3, ' ', phone_4) as `mysearch` 
FROM customers) base 
WHERE `mysearch` LIKE '%102%'"; 

$result = mysql_query($query); 
while ($row = mysql_fetch_array($result)) { 
echo "customer name: " . $row['customer_name'];  
} 
?> 

クエリは機能していますが、結果をエコー表示できるものがありません。実行されたときの結果はphpmyadminです。返されるデータベースには2つのエントリがあります。次のように
私の実際の出力は次のようになります。クエリ結果が表示されない

顧客名:顧客名:

それは2つのエントリを見つけたが、私は彼らがエコーを取得することはできませんことを示しています。 customer_nameは、データベース内のフィールド名と一致します。

+2

[リトルボビー](http://bobby-tables.com/は)あなたの[語りますスクリプトはSQLインジェクション攻撃のリスクがあります。](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)。 [文字列をエスケープする](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)でも安全ではありません! –

+3

[mysql_ *関数の使用をやめてください](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php)。 [これらの拡張機能](http://php.net/manual/en/migration70.removed-exts-sapis.php)はPHP 7で削除されました。[prepared](http://en.wikipedia.org/ [PDO](http://php.net/manual/en/pdo.prepared-statements.php)および[MySQLi](http://php.net/manual/en/mysqli.quickstart)のwiki/Prepared_statement)ステートメント.prepared-statements.php)、PDOの使用を検討してください。[これは本当に簡単です](http://jayblanchard.net/demystifying_php_pdo.html)。 –

+0

開かれた '<?php'タグ' error_reporting(E_ALL)の直後にファイルの先頭にエラー報告を追加します。 ini_set( 'display_errors'、1); ' 'またはdie(mysql_error()) 'のようなエラーチェックをクエリに追加します。または、現在のエラーログで問題を見つけることができます。 –

答えて

2

あなたの結果にcustomer_nameを持っているしたい場合は、あなたがあなたのサブクエリで分離カラムとして、それを選択する必要がありますが:

SELECT 
    * 
    FROM (
     SELECT 
      customer_name, 
      CONCAT(customer_name, ' ', address, ' ', street, ' ', phone_1, ' ', phone_2, ' ', phone_3, ' ', phone_4) as `mysearch` 
     FROM 
      customers 
    ) base 
WHERE 
    `mysearch` LIKE '%102%' 
+0

ありがとうございました。私はそれが私が行方不明だった簡単なものでなければならないことを知っていた。再度、感謝します。 –

関連する問題