warningの解決方法に関する質問

このQ&Aのポイント
  • 警告(warning)が出る理由として、mysql_query()関数に無効なMySQLリンクリソースが渡されていることが考えられます。
  • 解決策として、mysql_connect()関数やmysql_select_db()関数の実行結果をチェックし、正常に接続できているか確認しましょう。
  • また、MySQLのエラーメッセージを表示するために、mysql_error()関数を使用することも推奨されます。
回答を見る
  • ベストアンサー

warningの解決方法に関する質問

下記のコードを実行すると 下記のような警告(warning)がでます Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\server\public_html\bbs.php on line 53 いろいろやってみたのですが解決できません。 解決方法を教えてください <html> <head> <title>testbbs</title> </head> <body> <form action = "/bbs.cgi" method="post"> 投稿者名(自分の本名は入力しないでください) <br> <input type="text" name="title" size=50> <br> タイトル <br> <input type="text" name="name" size=60> <br> <br> 本文 <br> <textarea rows=10 cols=70 name="write"> </textarea> <br> <input type="submit" value="書き込む"> </form> <?php class readDb{ private $ConnectId; private $query; function __construct($server,$DbId,$DbPassword,$UseDb){ $ConnectId=mysql_connect($server,$DbId,$DbPassword); $Errflag=mysql_select_db($UseDb,$ConnectId); if(!$Errflag){ echo "失敗"; } } function serchTitle($tableName){ $query="SELECT * FROM ".$titleName; $result=mysql_query($query,$ConnectId); if($result){ echo "成功"; }else{ echo "失敗・・"; } } } $readDb_Obj= new readDb ("localhost","秘密","秘密","bbstest"); $readDb_Obj->serchTitle("titletest"); ?>

  • tukai
  • お礼率57% (102/177)
  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

class のメンバー関数内の $ConnectId は $this->ConnectId にしないといけません(__constructで2ヶ所、searchTitleで1ヶ所) それと function serchTitle($tableName){ $query="SELECT * FROM ".$titleName; の$tableNameと$titleNameはどちらかにしないといけないのではないでしょうか。

tukai
質問者

お礼

ありがとうございました おかげで問題は解決しました.

関連するQ&A

  • POSTでwarning!

    いつも大変お世話になり誠にありがとうございます。 また、同じような質問で申し訳ありません。 標記の件。 ブログフォームのソースは下記です。 表示のソースも下記です。 どうすれば表示されるでしょうか? ご回答のほど宜しくお願い申し上げます。        記 <h2>ブログフォーム</h2> <form action="blog_create.php" method=_POST> <label>ペンネーム:</label> <input type="text" name="name" value=""><br> <label>タイトル:</label> <input type="text" name="title" value=""><br> <label>カテゴリー:</label> <input type="text" name="category" value=""><br> <label>ブログ本文:</label><br> <textarea name="content" id="content" cols="50" rows="80"></textarea><br> <input type="submit" value="確認画面へ"> <?php $name = $_POST["name"]; $title = $_POST["title"]; $category = $_POST["category"]; $content = nl2br($_POST["content"]); echo "ペンネーム{$name}"; echo "タイトル{$title}"; echo "カテゴリー {$category}"; echo "本文 {$content}"; ?> <hr> <br> <input type="submit" action="/kanryou.php" value="送信する"> Warning: Undefined array key "name" in C:\xampp\htdocs\blog_create.php on line 13 Warning: Undefined array key "title" in C:\xampp\htdocs\blog_create.php on line 14 Warning: Undefined array key "category" in C:\xampp\htdocs\blog_create.php on line 15 Warning: Undefined array key "content" in C:\xampp\htdocs\blog_create.php on line 16 ペンネームタイトルカテゴリー 本文

    • ベストアンサー
    • PHP
  • phpとmysqlの検索システムを作成しているのですが

    半角英数字で検索すると、ちゃんと検索できるのですが、日本語や全角で検索しようとすると 接続ID=Resource id #2データベースを選択しました Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\php.php on line 54 検索結果 該当するデータはありませんでした 名前 メーカー Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\php.php on line 69 と出てしまいます。 phpのソース <html> <head> <title>検索結果</title> <meta http-equiv="Content-Type" content="text/html;charset=eucjp"> </head> <body> <?php $con=mysql_connect("","root",""); if(!$con){ echo ("MYSQL接続に失敗しました"); exit(); } else { echo ("接続ID=$con"); } mysql_query("SET NAMES sjis") or die("can not SET NAMES sjis"); $db=mysql_select_db("a05"); if(!$db) { echo ("データベースを選択できませんでした"); } else{ echo("データベースを選択しました"); } $name=$_POST["name"]; $meka=$_POST["meka"]; $mekanum=array("ミズノ","ヨネックス","ブリヂストン"); $meka=$mekanum[$meka]; $query = "select name,meka from test where"; if($name != "") { $query = $query . " name like '%$name%' "; } if($meka != ""){ $query = $query . " and meka like '%$meka%' "; } $result = mysql_query($query); $num_rows=mysql_num_rows($result); ?> <br>検索結果<br> <?php if($num_rows== 0){ $message="該当するデータはありませんでした"; } else $message=$num_rows ."件ヒットしました"; echo $message; ?> <br><table border=1><tr><td>名前</td><td>メーカー</td></tr><br> <?php while($row = mysql_fetch_array($result)):?> <tr><td><?php echo "$row[name]"; ?></td><td><?php echo "$row[meka]"; ?></td></tr> <? endwhile; ?> </table> <a href="html.html">再検索</a> </body> </html> htmlのソース <html> <head> <title>検索</title> <meta http-equiv="Content-Type" content="text/html;charset=eucjp"> </head> <body> <form method="POST" action="php.php"> <table border> <tr> <td height="30"><font size="5">&nbsp;ラケット名</font> <td height="30">&nbsp;<input type="text" name="name" size="40" maxlength="255"> </td></tr> </table> <table border> <tr> <tr> <td>メーカー</td> <td> <input type="radio" name="meka" value="ミズノ">ミズノ<br> <input type="radio" name="meka" value="ヨネックス">ヨネックス<br> <input type="radio" name="meka" value="ブリヂストン">ブリヂストン<br> <br> </td> </tr> </table> </SELECT> </td> </table> <input type="submit" name="submit" value="検索"> <input type="reset" value="条件クリア"> </tb> </body> </html> 分かる方がいたら教えていただきたいです、助言や指摘などありましたら、よろしくお願いします。

  • ボタンのonclick時における関数コールの仕方

    下記のPHPスクリプトにおいて、updateMemo()関数の中で、テストで、 echo 'in update'; として、関数内に入ったら、文字列表示をするようにしているのですが、 更新ボタンを押しても、updateMemo()関数の中に入ってきません。(in update が表示されません) 関数のコールの仕方が、onclick=の部分でまちがっているのでしょうか? 教えていただきたいです。 <?php ////////////////////////// // メモ内容の閲覧、更新 // ////////////////////////// $sid = (int)$_GET['sid']; var_dump($sid); $con = mysql_connect("*****", "*****", "*****"); // リモートのMySQLデータベースサーバーに接続する mysql_select_db("*****-ideamemo"); // データベースサーバーに存在する(myPHPAdminで作成済みの)データベースを選択する $sql = "SET NAMES utf8;"; mysql_query($sql); $sql = "SELECT * FROM ideamemo_table WHERE sid=$sid;"; $result = mysql_query($sql, $con) or die(mysql_error()); $row = mysql_fetch_row($result); mysql_close($con); //$row[0] = (int)$row[0]; // string⇒int にキャスト echo '<form name="form1" method="POST" action="deleteUpdate.php">'; echo '内容<br>'; echo '<textarea name="textarea" cols="100" rows="30">'.$row[3].'</textarea>'; echo '<br>'; echo '<input type="button" value="更新" onclick="<?php updateMemo('.$sid.');?>">'; //echo '<input type="button" value="更新" onclick="updateMemo();">'; echo '<input type="button" value="削除" onclick="deleteMemo('.$sid.');">'; echo '<input type="button" value="トップページへ" onclick="location.href=\'main.php\'">'; echo '</form>'; var_dump($row[2]); function updateMemo($sid){ //function updateMemo(){ echo 'in update'; // var_dump($sid); // exit; date_default_timezone_set("Japan"); $update = date(Y年m月d日(D)H時i分s秒); $textarea = $_POST['textarea']; var_dump($textarea); var_dump($update); $con = mysql_connect("*****", "*****", "*****"); // リモートのMySQLデータベースサーバーに接続する mysql_select_db("LAA0471050-ideamemo"); // データベースサーバーに存在する(myPHPAdminで作成済みの)データベースを選択する $sql = "SET NAMES utf8;"; mysql_query($sql); $sql = "UPDATE ideamemo_table SET contents = '$textarea', update_date = '$update' WHERE sid=$sid;"; $result = mysql_query($sql, $con); mysql_close($con); // header("Location: main.php"); } function deleteMemo(int $sid){ echo 'in delete'; $con = mysql_connect("*****", "*****", "*****"); // リモートのMySQLデータベースサーバーに接続する mysql_select_db("LAA0471050-ideamemo"); // データベースサーバーに存在する(myPHPAdminで作成済みの)データベースを選択する $sql = "SET NAMES utf8;"; mysql_query($sql); $sql = "DELETE FROM ideamemo_table WHERE sid=$sid;"; $result = mysql_query($sql, $con); mysql_close($con); // header("Location: main.php"); } ?>

    • ベストアンサー
    • PHP
  • 複数選択の方法が分からないのです。

    お世話になります。 現在<input type="checkbox" name="jyusyo" value="豊岡市">豊岡市<br> <input type="checkbox" name="jyusyo" value="養父市">養父市<br> <input type="checkbox" name="jyusyo" value="朝来市">朝来市<br> <input type="checkbox" name="jyusyo" value="神戸市">神戸市<br> <input type="checkbox" name="jyusyo" value="姫路市">姫路市<br> のようにしている為、最期にチェックしたワードでしか検索できません。 これらを複数選択に対応させる為 <input type="checkbox" name="jyusyo[]" value="豊岡市">豊岡市<br> <input type="checkbox" name="jyusyo[]" value="養父市">養父市<br> <input type="checkbox" name="jyusyo[]" value="朝来市">朝来市<br> <input type="checkbox" name="jyusyo[]" value="神戸市">神戸市<br> <input type="checkbox" name="jyusyo[]" value="姫路市">姫路市<br> としてみたものの、この先が分かりません。 受け取る側のphpは現在このような状態であります。 $jyusyo=$_POST["jyusyo"]; $jyusyonum=array("豊岡市","養父市","朝来市","神戸市","姫路市"); $query = "select name,jyusyo,kakaku,gazou,link from ocdda where"; if($jyusyo != "") { $query = $query . " jyusyo like '%$jyusyo%' "; } $result = mysql_query($query); $num_rows=mysql_num_rows($result); if($num_rows== 0){ $message="該当データ無し"; } else $message=$num_rows ."件あります"; echo $message; while($row = mysql_fetch_array($result)){ データベースのカラムもjyusyoになっていますが変えるべきですか? どうか改変ポイント等の御教授お願い申し上げます。

    • ベストアンサー
    • PHP
  • PHPエラー Warning: mysql_

    OCNサーバープランをスタンダードからビジネスライトへ変更した際、 OCN側で移動してくれたのはいいのですが、入っていた掲示板システムで、「削除」画面で 削除を押すと前サーバーまでは問題がなかったのですが、今回は削除はされるけれどエラー文がでてきます。 Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /usr/home/△△/www/htdocs/info/●●.php on line 87 問題の87行目: echo "<br>1件削除しました"; <?php if ($_POST["go_1"]==1) { $db_date = htmlspecialchars($_POST['db_date']); $sql="DELETE FROM keiji_t where kdate='".$db_date."'"; mysql_query($sql,$conn) or die("削除できませんでした"); mysql_free_result($res); echo "<br>1件削除しました"; } ?> 「1件削除しました」という文字はでます。 何が原因かわからず、もし原因として考えられそうなこと教えていただければとこちらにいれさせていただきました。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • フォームからMYSQLへの接続

    フォームからの入力で登録ボタンを押して MYSQLへデータの書き込み、そして削除ボタンを押して データを削除するという勉強をしています。 削除の場合は、番号か名前、電話番号のいずれかを入力して 削除ボタンを押せば該当するデータが削除されるようにしたいのですが 番号指定以外の名前指定や電話番号指定での削除ができません。 「DELETE FROM address where no=$no or name='$name' or tel='$tel'」の 書き方に問題があるようですが どのようにしたらよいのでしょうか? ---------------------------------------------- <html> <body> <form action="" method="post"> 番号:<br><input type="text" name="no"><br> 氏名:<br><input type="text" name="name"><br> 電話番号:<br><input type="text" name="tel"><br><br> <input type="submit" value="登録" name="submit"> <input type="submit" value="削除" name="submit"> </form> <?php error_reporting(1); $con = mysql_connect("127.0.0.1", "root", ""); if(!$con){ exit("データベースに接続できませんでした。"); } $result = mysql_select_db("test", $con); if(!$result){ exit("データベースを選択できませんでした。"); } $no = $_POST["no"]; $name = $_POST["name"]; $tel = $_POST["tel"]; $submit = $_POST["submit"]; if($no != null){ if($submit == "登録"){ $result = mysql_query("INSERT INTO address(no, name, tel) VALUES ('$no', '$name', '$tel')", $con); if($result){ echo "<p>登録が完了しました。<br>"; }else{ echo "<p>登録失敗</p>"; } }elseif($submit == "削除"){ $result = mysql_query("DELETE FROM address where no=$no or name='$name' or tel='$tel'", $con); if($result){ echo "<p>削除が完了しました。<br>"; }else{ echo "<p>削除失敗</p>"; } } } ?> </body> </html> ---------------------------------------------- あと「header("Location: {$_SERVER['PHP_SELF']}");」を使って 2重投稿を回避したいのですが 書く場所により「登録が完了しました。」「削除が完了しました。」の メッセージが表示されなくなってしまいます。 どこに記入したらよいのでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • (MySQLで修正スクリプトがうまくいかず困っています。

    最近MySQLをはじめました、まだ初心者の者です。 MySQLデータベースで、修正用のスクリプトがうまく起動いたしません。自分なりに色々書籍やネット検索致しましたがどこが間違っているのか見出せません。 お手数ですが、どうか指南お願い致します。 リンクから呼び出すスクリプトと削除スクリプトの二点です。 -------------------(始)ここから明細スクリプト(始)--------------- <?php extract($_GET); mysql_connect('localhost','root','xxxx'); mysql_select_db('xxxx'); $sql = "select * from xxxx where id = '{$id}'"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ echo "検索データが見つかりませんでした。"; exit; } else { while($row = mysql_fetch_array($result)){ echo "<h2> " , $row["title"] , "</h2>"; echo "<p><font size=\"-2\">#", $row["id"] ," ●",$row["tourokubi"] ,"</font></p>\n"; echo "<p><div class=\"hon\">", nl2br($row["honbun"]), "</div></p>"; echo "<div class=\"key\">keywords: ", nl2br($row["keyword"]), "</div>"; $row["id"]; echo "</p>"; echo "</p>"; echo "<a href=\"correct.php?id="; echo $row["id"]; echo "\">[修正する]</a>"; echo "<a href=\"j_sakujo1.php?id="; echo $row["id"]; echo "\">[削除する]</a><hr>"; } } ?> ------------------------(終)ここまで(終)------------------------ -------------------(始)ここから削除スクリプト(始)--------------- <?php extract($_POST); extract($_GET); mysql_connect('localhost','root','xxxxx'); mysql_select_db('xxxxx'); //修正レコード if($honbun<>""){ $sql = "update xxxxx set title='$title', honbun='$honbun', keyword='$keyword' where id = $id"; mysql_query($sql); echo "レコードの修正が完了しました"; exit; } // 修正ルーチン $sql = "select * from xxxxx where id = $id"; $result = mysql_query($sql); while($row = mysql_fetch_array($result)){ $tourokubi = $row["tourokubi"]; $title = $row["title"]; $honbun = $row["honbun"]; $keyword = $row["keyword"]; } echo "<form action=\"correct.php\" method=\"post\" >\n"; echo "<p>・日付<br>\n"; echo $tourokubi, "</p>\n"; echo "<p>・タイトル<br>\n"; echo "<input type=\"text\" name=\"title\" value=\"",$title, "\"size=60 ></p>\n"; echo "<p>・本文<br>\n"; echo "<textarea name=\"honbun\" rows=20 cols=70 >\n"; echo $honbun; echo "</textarea></p>\n"; echo "<p>・キーワード(スペース区切りで列記)<br>\n"; echo "<textarea name=\"keyword\" rows=2 cols=70 >\n"; echo $keyword; echo "</textarea></p>\n"; echo "<p><input type=\"hidden\" name=\"i\" value=\"", $i, "\">  "; echo "<p><input type=\"submit\" value=\"修正\">  "; echo "<input type=\"reset\" value=\"クリア\"></p>\n"; echo "</form>\n"; ?> -------------------(終)ここまで(終)---------------------- 修正ボタンを押すと、修正しました。と表示されるのですが、 なぜかデータは更新されておりません。 自分なりに調べましたが、原因がどうしても分かりません。 ご指南よろしくお願い致します。

  • フォームの値をまとめて取得する関数

    以下のようなフォームから値を取得するときに、(2)のような関数化したいと思っていますが、思うように取得できません。どこが問題かアドバイスください。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=sjis" /> <title>sample</title> </head> <body> <form action="" method="post"> 名前:<br /> <input type="text" name="name" size="30" value="" /><br /> コメント:<br /> <textarea name="comment" cols="30" rows="5"></textarea><br /> <br /> <input type="submit" value="登録する" /> </form> </body> </html> (1)問題なく表示できる <?php  foreach(${"_" . $_SERVER["REQUEST_METHOD"]} as $k=>$v) {   ${$k}=$v;  } echo "名前:$name<br>"; echo "コメント:$comment<br>"; ?> (2)表示できない? <?php function Request() {  foreach(${"_" . $_SERVER["REQUEST_METHOD"]} as $k=>$v) {   ${$k}=$v;  } } Request(); echo "名前:$name<br>"; echo "コメント:$comment<br>"; ?>

    • 締切済み
    • PHP
  • PHPのサンプルコードが意図した通りに動かない。

    かれこれ6時間眺めてますが何が駄目なのかがわかりません。 どこが悪いのか教えていただけると助かります。 このbbs.phpは 二つのインプット要素をもつHTMLフォームを含むPHPファイルで、 名前とひとことコメントを入力してsubmitすれば フォームの下部にそのコメントを 名前、コメント、日付の書式で一行づつ表示する 。。。はずだったんですが Parse error: syntax error, unexpected T_STRING in /Applications/XAMPP/xamppfiles/htdocs/online_bbs/bbs.php on line 48 らしく該当する行を眺めてみても何がいけないのかさっぱりです。 コード内にもエラーが出たら出力するコードがあるのですが どうやらこれはインタープリタ自体が吐くエラーのようで このエラーの表示時にはフォーム要素は一切表示されません。 なにがいけないのか教えてください ほとほと困り果てています <?php $link = mysql_connect(`localhost`,`root`,`takataka`); if(!$link) { die(`Can not connect database`. mysql_error()); } mysql_select_db(`online_bbs`,$link); $errors = array(); if($_SERVER[`REQUEST_MTHOD`]===`POST`) { $name = null; if(!isset($_POST[`name`]) || !strlen($_POST[`name`])) { $errors[`name`] = `input your name `; }else if(strlen($_POST[`name`]) > 40) { $errors[`name`] = `名前は四十文字以内で入力してください`; }else { $name = $_POST[`name`]; } $comment = null; if(!isset($_POST[`comment`]) || !strlen($_POST[`comment`])) { $errors[`comment`] = `Input your comment please `; }else if(strlen($_POST[`comment`]) > 200) { $errors[`comment`] = `コメントは200文字以内で入力してください`; }else { $comment = $_POST[`comment`]; } if(count($errors) === 0) { $sql = "INSERT INTO `post` (`name`,`comment`,`created_at`) VALUES (`" . mysql_real_escape_string($name) . "`,`" . mysql_real_escape_string($comment) . "`,`" . date(`Y-m-d H:i:s`) . "`); mysql_query($sql,$link); mysql_close($link); header(`Location: http://localhost/online_bbs/bbs.php`); } } ?> <html> <head>    <titlle>ひとこと掲示板</title> </head> <body> <h1>ひとこと掲示板掲示板</h1> <form action="bbs.php" method="post"> //ここが48行目になります <?php if (count($errors) > 0): ?> <ul class="error_list"> <?php foreach ($errors as $error): ?> <li> <?php echo htmlspecialchars($error,ENT_QUOTES,`UTF-8`) ?> </li> <?php endforeach; ?> </ul> <?php endif; ?> 名前:<input type="text" name="name"/><br/> ひとこと;<input type="text" name="comment" size="60"/><br/> <input type="submit" name="submit" value="送信"/> </form> <?php $sql = "SELECT * FROM `post` ORDER BY `created_at` DESC"; $result = mysql_query($sql,$link); ?> <p><?php echo $result; ?></p> <?php if($result !== false && mysql_num_rows($result)): ?> <ul> <?php while($post = mysql_fetch_assoc($result)): ?> <li> <?php echo htmlspecialchars($post[`name`],ENT_QUOTES,`UTF-8`); ?> <?php echo htmlspecialchars($post[`comment`],ENT_QUOTES,`UTF-8`); ?> - <?php echo htmlspecialchars($post[`created_at`],ENT_QUOTES,`UTF-8`); ?> </li> <p>test</p> <?php endwhile; ?> </ul> <?php endif; ?> <?php mysql_free_result($result); mysql_close($link); ?> </body> </html>

    • ベストアンサー
    • PHP
  • 構文の省略について

    下記をもっと省略(短い構文で)して書きたいのですが、どのようなやり方があるでしょうか。 testというテーブルから指定したidのnameを取り出して並べたいだけなのですが、このような長々としたものしか思い浮かびませんでした。 <?php $n1 = 1; $n2 = 2; $n3 = 3; $rs1 = mysql_query("select * from test where id = '$n1';",$conn); $rec1 = mysql_fetch_array($rs1, MYSQL_ASSOC); echo $rec1['name']; echo <br>; $rs2 = mysql_query("select * from test where id = '$n2';"); $rec2 = mysql_fetch_array($rs2, MYSQL_ASSOC); echo $rec2['name']; echo <br>; $rs3 = mysql_query("select * from test where id = '$n3';"); $rec3 = mysql_fetch_array($rs3, MYSQL_ASSOC); echo $rec3['name']; mysql_free_result($rs1); mysql_free_result($rs2); mysql_free_result($rs3); mysql_close($conn); ?>

    • ベストアンサー
    • PHP

専門家に質問してみよう