電子書籍の厳選無料作品が豊富!

 GETで取得したナンバーを元にDBを検索し、該当するデータがなければその旨を表示したいのですが、以下のソースでは「該当する記事はありません。」が出力されません。
 else以降(データがあった場合)の処理は正常に行われているようなので、if文の最初の条件指定が間違ってるのかと思うのですが、PHPマニュアルにも同じ風にしか書いてなかったので「?」状態です。試しに一度if(!isset($result))と書いてみたんですがやはりダメでした。
 どこを直せばいいのか、アドバイスをお願いいたします。

///////////////////////////////////////////////////////////
$conn = my_pg_connect();
$num=$_GET['num'];
if(!isset($num)){
$result_html="<p>不正なアクセスです。</p>";
}else{
$sql = "select * from testtable where num='{$num}'";
$result = pg_query($conn,$sql);
if(!$result){
$result_html="<p>該当する記事はありません。</p>";
}else{
(データがあった場合はHTMLとして書き出し)
}
}
(後略)

A 回答 (1件)

if(!$result){


$result_html="<p>該当する記事はありません。</p>";
}else{



$result = pg_query($conn,$sql);
$data = array();
while($row = pg_fetch_assoc($result))
{
 $data[] = $row;
}
if($data == array())
{
 $result_html="<p>該当する記事はありません。</p>";
}

$resultはリソースです。正常にアクセスできたかを示すキーです。
実データではありません。
falseを返すのはconnectが不正とかいったパターンしかありませんよ。

>マニュアル
マニュアルには以下の形式で載っていると思うのですが。。
$result = pg_query($query) or die('Query failed: ' . pg_last_error());


--
蛇足。

$num=$_GET['num'];
if(!isset($num)){



if(!isset($_GET['num'])){
}else{
$num=$_GET['num'];

ですね。
あとGET値をそのままクエリに突っ込んでるのでかなり危険です。
pg_escape_stringを「最低限」噛ましましょう。
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。
どこかで「やっぱり$resultではないよなぁ」と思いつつ、情けないことに他に思いつきませんでした。おかげさまで解決です。
現在はとりあえず動作確認最優先なので、XSS対策等は後回しにしているのですが、運用段階ではきちんと実装させたいと思います。

お礼日時:2007/11/13 12:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!