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

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

新規登録して質問してみよう
ただいま回答率
85.50%
mysqli

MySQLiはPHP5より導入されているデータベース用のドライバです。MySQL 4.1.3以降の新しい機能の利点をまとめています。

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

3873閲覧

bindvalue? bindparam?

a-_.

総合スコア133

mysqli

MySQLiはPHP5より導入されているデータベース用のドライバです。MySQL 4.1.3以降の新しい機能の利点をまとめています。

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

1グッド

1クリップ

投稿2016/07/15 04:40

編集2016/09/06 02:14

下記コードでFatal error: Uncaught Error: Call to a member function bindvalue() on boolean in C:\XAMPP\htdocs\XXX.php:45 Stack trace: #0 {main} thrown in C:\XAMPP\htdocs\XXX.php on line 45とエラーが表示されました
エラーの指す45行目は$stmt->bindvalue($_POST['name'], $_POST['comment']);の箇所で、valueとparamの意味を調べてみました
そこで数値が入ればparamで無いならvalueみたいな説明は理解したんですが、その他にオブジェクト型と手続き型と種類があるのを認識したもののイマイチ違いが分かりません
せいぜい分かったとしても$~->か$~=new~くらいの書き出しです

因みにオブジェクトか手続きかで結果が変化するのでしょうか

あと、全く別の内容になってしまうんですが、ネットでプログラミングに関して分からないことがあったときに皆さんはどういうワードで調べたら参考になりそうなサイトを探してるんでしょうか

PHP

1<!DOCTYPE HTML> 2<html> 3 <head> 4 <meta http-equiv="content-type" content="text/html; charset=utf-8"> 5 </head> 6 <body> 7 <form method="post" action=""> 8 名前:<input type="int" name="name"> 9 内容:<input type="text" name="comment"> 10 <input type="submit" value="投稿"> 11 </form> 12 </body> 13</html> 14 15<?php 16 header('content-type: text/html; charset=utf-8'); 17 18 $name = $_POST['name']; 19 $comment = $_POST['comment']; 20 $name = htmlspecialchars($name, ENT_QUOTES, 'utf-8'); 21 $comment = htmlspecialchars($comment, ENT_QUOTES, 'utf-8'); 22 echo $name, '<br>', PHP_EOL; 23 echo $comment, PHP_EOL; 24 25 echo '<pre>'; 26 var_dump($_POST); 27 echo '</pre>'; 28 29 $user = 'XXX'; 30 $password = 'XXX 31 $dbname = 'XXX 32 $host = 'localhost'; 33 34 $mysqli = new mysqli($host, $user, $password, $dbname); 35 if ($mysqli->connect_error){ 36 echo $mysqli->connect_error; 37 exit(); 38 }else{ 39 $mysqli->set_charset("utf-8"); 40 } 41 42 $timestamp = date("y/m/d h:i:s"); 43 44 $stmt = $mysqli->prepare('INSERT INTO テーブル名 (name, comment,timestamp) VALUES (?, ?)'); 45 $stmt->bindvalue($_POST['name'], $_POST['comment']); 46 $stmt->execute(); 47 48 $query = 'SELECT * FROM テーブル名'; 49 $stmt = $mysqli->prepare($query); 50 $stmt->execute(); 51 52 $result = $mysqli->query('SELECT * FROM テーブル名 ORDER BY date DESC'); 53 if($result){ 54 while($row = $result->fetch_object()){ 55 $name = htmlspecialchars($row->name); 56 $comment = htmlspecialchars($row->comment); 57 $timestamp = htmlspecialchars($row->timestamp); 58 } 59 } 60 61 $mysqli->close(); 62 63?>
mhashi👍を押しています

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

コードを見る限り、mysqliとPDOを混同している事が根本の原因でしょう。

そもそもmysqliにはbindvalueなんてメソッドは存在しませんし、
PDOにもbindValueというVが大文字になったメソッドは存在しますが、bindvalueで行くと同じくエラーになるでしょう。


PHPでは元々RDBによって対応するライブラリを使い分けていましたが、
PHP5以降は折角のオブジェクト指向なんだし、全部同じ書き方でアダプターだけ付け替えれば統一したメソッドで管理できるやんという思想のPDOが追加されました。

ですのでmysqliとPDOは作った人も思想もメソッドの名称ですら異なります。
この辺を踏まえてもう一度コードを書きなおして見て下さい。

投稿2016/07/15 05:06

miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

$stmt->bindvalue($_POST['name'], $_POST['comment']);

いずれにしてもこの書き方はない
第一引数は:name 形式の置き換えをするか、疑問符プレースホルダを使った文に対して
1 から始まるパラメータの位置を指定します

bindParamとbindValueの違いは大きく2つ
一つは

  • bindValueは値を指定できる
  • bindParamは変数しか入れられない

もう一つは

  • bindValueに変数を指定した場合即時値が反映される
  • bindParamはexecute()した時点で変数の値を参照する

特殊なケースをのぞき使い方はほぼ同じです

投稿2016/07/15 04:53

yambejp

総合スコア114583

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2016/07/15 05:09

miyabi-sunさんのご指摘のとおりmysqliの問題でしたね すみません、勝手にPDOだとおもっていました
miyabi-sun

2016/07/15 05:14

メジャーなのはPDOですからね。 今後の事を見据えてPDOで書き直すことになる可能性も含めて+しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問