質問: mysql_close($link); ?> 戻る ``` すると、今度はアカウントの登録もできなくなり、次のエラーが出てきました。 ``` Warning: mysql_query() expects parameter 1 to be string, object given in /insert.php on line 26 クエリの送信に失敗しました。 ``` 自分が理解できたところは、26行目にエラーが発生していることしか分かりませんでした。 このエラーが示している内容とこのエラーの解決方法を教えていただけると幸いです。 使用させてもらっているWEBサーバーは 家Tサーバー で、PHPのバージョン?は5.6系(セーフモードOFF)らしいです。
回答: そもそも何故ブログの記事を見ただけで出来ると思ったんですか? その記事は**当時質問者さんと同じ事をやろうとした備忘録**のようなものなんで、絶対に鵜呑みにはせず自分で裏を取ってください。 PHPで信頼出来るサイトは以下の2つです。 メンテもされてますし此処は必ず目を通しましょう。 * PHP: The Right Way * PHP公式マニュアル > > 調べたところ、MySQLに接続するための構文が廃止されるみたいなことが書いてあった > > > MySQLに接続するための構文が廃止されたらどうやってMySQLに接続するんですか? 「PHPはMySQLのサポートをやめました」とも読めますね。 > > PHP 用の mysql 拡張モジュールの開発はすでに終了しており、 PHP 5.5.0で正式に「廃止予定」となった。つまり、近い将来に削除されるということだ。 > > もし未だに`mysql_connect()`とか`mysql_query()`のような`mysql_*`系の関数を使っているなら、 いずれ書き直さざるを得なくなる。 > > `mysql`を使っているプログラムがあれば、 今のうちに`mysqli`か`PDO`を使うように書き直しておこう。 > > そうすれば、後になって焦らずに済む。 > > > > > mysqli か PDO_MySQL のどちらかを使うことをおすすめします。 古い mysql 拡張モジュールを新規開発で使うのはおすすめしません。 というのも、これは PHP 5.5.0 で非推奨となり、PHP 7 で削除されたからです。 > > > 正確には**古くなったmysql関数のサポートやめるから、今後はmysqliかPDO使ってね**と書いてあります。 そして原因の説明 ``` // データベースへ接続 $db = mysqli_connect($host, $username, $passwd, $dbname); $result = mysql_query($db, $sql) or die('クエリの送信に失敗しました。'); ``` mysqlとmysqliは互換性がないので、同じライブラリセットでしかその接続は使えません。 mysqliでコネクションを確立→mysqlで使おうとして失敗しています。 これは現在非推奨であるmysql系の関数です。 mysqliで接続する場合は、これら全てが使えなくなります。 mysqlの代わりに用意されたmysqli系の一覧です。 関数という形で残っている数は結構減ってますが、今までと同じように使う方法もあるようです。