このサイト を参考にログインシステムを構築しています。しかし、エラー?が出てきたので質問させていただきます。
今は以下の構文を使用しています。
insert.php
php
1<html> 2 <meta charset="UTF-8"> 3 <head> 4 <title>ログインユーザー追加ページ</title> 5 </head> 6 <body> 7<?php 8error_reporting(E_ALL & ~E_NOTICE); 9require '../password.php'; 10$link = mysql_connect('localhost', '(ユーザー名)', '(パスワード)'); 11if (!$link) { 12 die('接続失敗です。'.mysql_error()); 13} 14 15$db_selected = mysql_select_db('(ユーザー名)', $link); 16if (!$db_selected){ 17 die('データベース選択失敗です。'.mysql_error()); 18} 19 20mysql_set_charset('utf8'); 21 22$result = mysql_query('SELECT name,partid,password FROM TODO_USER'); 23if (!$result) { 24 die('SELECTクエリーが失敗しました。'.mysql_error()); 25} 26 27$name = $_POST['name']; 28$partid = $_POST['partid']; 29$password = $_POST['password']; 30$hashpass = password_hash($password, PASSWORD_DEFAULT); 31 32$sql = "INSERT INTO TODO_USER (name, partid, password) VALUES ('$name','$partid','$hashpass')"; 33$result_flag = mysql_query($sql); 34 35if (!$result_flag) { 36 die('INSERTクエリーが失敗しました。すでに同じNAMEが登録されている可能性があります。<br><a href="index.html">戻る</a>'); 37} 38 39print('<p>' . $partid . 'パート所属の' . $name . 'ユーザーを登録しました。</p>'); 40 41$close_flag = mysql_close($link); 42 43?> 44 <a href="index.html">戻る</a> 45 </body> 46</html>
ユーザー登録はうまくいくのですが、このようなエラーが出てきました。
error
1Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in (ディレクトリ)insert.php on line 10
調べたところ、MySQLに接続するための構文が廃止されるみたいなことが書いてあったため、こちらのサイトと、このサイトを参考に次の構文に変更してみました。
insert.php
php
1<html> 2 <meta charset="UTF-8"> 3 <head> 4 <title>ログインユーザー追加ページ</title> 5 </head> 6 <body> 7<?php 8error_reporting(E_ALL & ~E_NOTICE); 9require '../password.php'; 10 11// データベースへの接続に必要な変数を指定 12$host = 'localhost'; 13$username = '(ユーザー名)'; 14$passwd = '(パスワード)'; 15$dbname = '(データベース名)'; 16 17// データベースへ接続 18$db = mysqli_connect($host, $username, $passwd, $dbname); 19 20// 接続チェック 21if (!$db) { 22 die('データベースの接続に失敗しました。'); 23} 24 25$sql = "SELECT * FROM TODO_USER"; 26$result = mysql_query($db, $sql) or die('クエリの送信に失敗しました。'); 27 28$name = $_POST['name']; 29$partid = $_POST['partid']; 30$password = $_POST['password']; 31$hashpass = password_hash($password, PASSWORD_DEFAULT); 32 33$sql = "INSERT INTO TODO_USER (name, partid, password) VALUES ('$name','$partid','$hashpass')"; 34$result_flag = mysql_query($sql); 35 36if (!$result_flag) { 37 die('INSERTクエリーが失敗しました。すでに同じNAMEが登録されている可能性があります。<br><a href="index.html">戻る</a>'); 38} 39 40print('<p>' . $partid . 'パート所属の' . $name . 'ユーザーを登録しました。</p>'); 41 42$close_flag = mysql_close($link); 43 44?> 45 <a href="index.html">戻る</a> 46 </body> 47</html>
すると、今度はアカウントの登録もできなくなり、次のエラーが出てきました。
Warning: mysql_query() expects parameter 1 to be string, object given in /insert.php on line 26 クエリの送信に失敗しました。
自分が理解できたところは、26行目にエラーが発生していることしか分かりませんでした。
このエラーが示している内容とこのエラーの解決方法を教えていただけると幸いです。
使用させてもらっているWEBサーバーは 家Tサーバー で、PHPのバージョン?は5.6系(セーフモードOFF)らしいです。

回答2件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。