2016-08-04 3 views
0

エントリがデータベースに属しているかどうかを確認しようとしています。エントリがデータベースに属しているかどうか確認してください

エントリが所属またはデータベース に属していない場合、それは示して、両方のケースでは、何が起こる
$result = mysql_query("SELECT Lot# FROM data WHERE Lot#='$batch'"); 
if(mysql_num_rows($result) == 0) { 
    echo "Batch# does not exist. please enter a valid batch#"; 
    } 
    else { 
    header("Location: http://localhost/EasyTrack/std Order1.php"); /* Redirect browser */ 
} 

警告:はmysql_num_rows()は、パラメータ1がCに与えられたリソース、boolean型であることを期待:\のXAMPPを\ htdocs \ EasyTrack \ StdOrderUpdate.php on line 28 バッチ#は存在しません。有効なバッチを入力してください#

私の正しいチェック方法はありますか?もしそうでないのであれば、もっと良い方法がありますか?

+0

が行われていますか? – jitendrapurohit

答えて

0

潜在的にコードに間違っている(セキュリティを話す)多くの側面があります。しかしPHP documentationによると、これは単なるサンプルコードであることを当たり前の服用:

するmysql_query()も失敗し、ユーザーが参照するテーブル(複数可)にアクセスする権限を持っていない場合はFALSEを返しますがクエリ

また、 '#'は列名として使用できません。あなたがそれを意図していたと仮定して、それらの名前をバッククォートで囲みます。

FURTHER NOTES:

  1. MySQL拡張は、PHP 5.5.0で廃止されました、そしてそれは、PHP 7.0.0で削除されました。代わりに、MySQLiまたはPDO_MySQL拡張を使用する必要があります
  2. クエリで直接変数を使用しているので、安全であることを確認してください。それをエスケープするか、プリペアドステートメントこの中
+0

私はあなたのポイントを考慮に入れます。ありがとう –

0

、またはいただきましたクエリを間違って覚えていない任意の同様なケースを、使用するか、あなたはmysql_error()を使用する必要があります。以前のMySQL操作からのエラーメッセージのテキストを返します。

// First, you have to establish connection with database. 
mysql_connect($host, $username, $password) or die("Cannot connect to database"); 

// Next, select database that you want to work with. 
mysql_select_db($db_name) or die("cannot select database"); 

// Then, finally, start using it. 
$result = mysql_query("SELECT Lot# FROM data WHERE Lot#='$batch'") or die(mysql_error()); 

あなたのコメントに基づいて更新

は詳細についてmysql_connectmysql_select_dbを参照してください。

注:これはちょうど迅速なデバッグ目的のためです。本番環境では使用しないでください。 DBへの接続が

+0

"データベースが選択されていません"というメッセージが表示されます。 –

関連する問題