質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.50%

  • PHP

    24014questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • MySQL

    6995questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

ログインページのエラー

受付中

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 380

kacz-

score 6

前提・実現したいこと

phpとmysqlでログインページの作成をしており、メールを送信しようとしたところ下記のエラーが出ます。対処方があればよろしくお願いいたします。

発生している問題・エラーメッセージ

23行目の $result = mysqli_query($query); の部分にエラーが発生しておりますがどのように解決したらよろしいでしょうか。

Warning: mysqli_query() expects at least 2 parameters, 1 given in /Applications/XAMPP/xamppfiles/htdocs/members/regist/email_regist.php on line 23

該当のソースコード

<?php
/*******************************************************************************
 *
 *    [mail_regist.php] ユーザの仮登録と登録ページURLの送信
 *
 ********************************************************************************/
/*フォームからメールアドレスを取得*/
$email = $_POST["email"];
/*エラーメッセージ配列*/
$error = array();
/*データベースに接続*/
require_once("db.php");
/*メールアドレス入力チェック*/
if($email == "") { //未入力の場合、エラーを返す
  //エラー配列に値を代入    
  array_push($error, "メールアドレスを入力してください。"); //エラー配列に値を代入
} else {
  //仮ユーザーIDの生成
  $pre_user_id = uniqid(rand(100,999));    
  $query = "insert into members(pre_userid,email) values('$pre_user_id','$email')";

  //SQL文を発行
 $result = mysqli_query($query);
  /*データベース登録チェック*/
  if($result == false) {
    array_push($error,"データベースに登録できませんでした。"); //エラー配列に値を代入
  } else {

  /*取得したメールアドレス宛にメールを送信*/
  mb_language("japanese");  //言語の設定
  mb_internal_encoding("utf-8");//内部エンコーディングの設定

  $to = $email;
  $subject = "会員登録URL送信メール";
  $message = "以下のURLより会員登録してください。\n".
  "http://localhost:8888/members/regist/index.php?pre_userid=$pre_user_id";
  $header = "From:test@test.com";

  if(!mb_send_mail($to, $subject, $message, $header)) {  //メール送信に失敗したら
    array_push($error,"メールが送信できませんでした。<br><a href='http://localhost:8888/members/regist/index.php?pre_userid=$pre_user_id'>遷移先</a>"); //エラー配列に値を代入    
    }
  }
}
/*エラーがあるかないかによって表示の振り分け($error配列の確認)*/
if(count($error) > 0) {  //エラーがあった場合
  /*エラー内容表示*/
  foreach($error as $value) {
?>
<table>
  <caption>メールアドレス登録エラー</caption>
  <tr>
    <td class="item">Error:</td>
    <td><?php print $value; ?></td>
  </tr>
</table>
<?php
  }  //foreach文の終了
} else {  //エラーがなかった場合        
?>
<table>
  <caption>メール送信成功しました。</caption>
  <tr>
    <td class="item">送信先メールアドレス:</td>
    <td><?php print $email ?></td>
  </tr>
</table>
<?php
}
?>

試したこと

課題に対してアプローチしたことを記載してください

補足情報(言語/FW/ツール等のバージョンなど)

より詳細な情報

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

+2

手続き型なら、mysqli_query関数の第一引数にはmysqli_connect関数が返すリンクIDを渡す必要がありますよ。そもそも、どこでデータベースに接続してるんですか?

$link = mysqli_connect('localhost', 'user', 'passwd', 'db');
$result = mysqli_query($link, $query);

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/06/06 15:46

    すいません。php初心者です。
    db.phpを作ってその中に下記のように入れました。

    <?php
    $link = mysqli_connect("localhost", "123", "pa", "dbname");
    ?>

    のような形でデータベースに接続してます。

    キャンセル

  • 2017/06/06 15:48 編集

    返信ありがとうございます。
    > db.phpを作ってその中に下記のように入れました。...
    なるほど。
    では、その$linkをmysqli_query関数の第一引数に指定してあげてください。

    キャンセル

+2

手続き型のmysqli_query関数は引数が2つ必要です。
http://php.net/manual/ja/mysqli.query.php
現状ですと、第一引数に指定すべきリンクIDがないですね。
そもそもmysqli_connectでデータベースに接続する処理がありません。
リンク先のサンプルを見れば作り方は書いてあると思いますが、おおよその作り方はこんな感じです。

// データベース接続
$link = mysqli_connect("~");
// クエリ実行
$result = mysqli_query($link, "SQL文")

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

mysqli_query()へのパラメータの渡し方がおかしいです
マニュアルを確認して下さい

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

同じタグがついた質問を見る

  • PHP

    24014questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • MySQL

    6995questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。