ごく最近PHPとmysqlを勉強しだした初心者です。

PHPでDBの検索フォームを作ろうとしているのですが、どうしてもわからないので質問させていただきました。

検索フォームに電話番号を入れると、該当する人の情報を表示させるようにしたいと思ってます。


私の持っている本では、SQLの検索を行うにはSELECT句を使い

  SELECT フィールド名 FROM テーブル名 WHERE 条件文;

という風にあって、条件文がid=1とかの定数で指定したものしかありません。


検索フォームに入力された数値($_POSTの値)を条件文にいれて、検索フォームで入力された電話番号を検索するようにできますか?
もしできないなら、どのような形で作ればよいでしょうか?

贅沢ですが、できれば簡単に解説もしていただけると非常に助かります。

ご教授の程、何卒よろしくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

> もし電話番号に該当者がいない場合は


> 「該当者が存在しません」

$stmt->fetch で条件に該当する件数文だけのループを回していますから、
このループ回数が0回だった時が「該当者が存在しない」時ということになります。
それを数える変数処理でも入れておけばいいでしょう。
あと、私の書いたコードでは、事前にテーブルヘッダを出力していますが、これは該当なしの時は出力不要なので、ちょっと順番を変えて

---ここから---
print "<table><tr><th>id</th><th>c_id</th><th>name</th><th>address</th>\n";
while ($stmt->fetch()) {
print "<tr><td>$id</td><td>$c_id</td><td>$tel</td><td>$address</td></tr>\n";
}
---ここまで---
の部分が

---ここから---
$count = 0;
while ($stmt->fetch()) {
if ($count == 0) print "<table><tr><th>id</th><th>c_id</th><th>tel</th><th>name</th><th>address</th>\n"; #最初の一回だけ出力
print "<tr><td>$id</td><td>$c_id</td><td>$tel</td><td>$name</td><td>$address</td></tr>\n";
$count++;
}
if ($count == 0) print "該当者が存在しません";
---ここまで---
といった感じになるかと思います。
    • good
    • 0
この回答へのお礼

mtaka2様

何から何までありがとうございました!!!
大変勉強にもなりました。

今後も勉強していきたいと思います。
ありがとうございました!!

お礼日時:2011/04/20 18:50

> bind_result エラー


すみません、引数を間違えてました。

> id,c_id,name,tel,addressというフィールドを用意している。

にあわせて、
> $result = $stmt->bind_result($id, $c_id, $name, $tel, $address);
にしてください。
    • good
    • 0
この回答へのお礼

お世話になっております。

うまくいきました!!!
本当にありがとうございました!


あつかましいかも知れないのですが、もし教えていただけるのであれば
最後に1つだけ教えてください。

もし電話番号に該当者がいない場合は
「該当者が存在しません」
というようなメッセージを表示しようとしたら、おそらくifを使って
検索結果がfalseだったら
echo '該当者が存在しません';
というようになると思うのですが、色々試してみたのですが、エラー表示
ばかりになってうまくいきません…

もし気が向いたら教えてください。
本当にありがとうございました!!!

お礼日時:2011/04/20 18:18

> それで最初に教えていただいた記述で試してみたのですが、


>特にエラーは出ないのですが結果が表示できません。。。

回答1のコードは、SQLを発行するところまでです。結果を取得・表示する部分がありません。
そこまで含めると下記のようになります。(うまく動かなかった時の原因究明のため、前半部もエラーチェックのコードを追加しています)

tel_search.php
---ここから---
$db = new mysqli('localhost', 'root', '','torys');
if ($db->connect_error) die("DB接続エラー:".$db->connect_error);
$sql = "SELECT * FROM `customer` WHERE `tel` = ?";
$stmt = $db->prepare($sql);
if (!$stmt) die("prepare エラー:".$db->error);
$result = $stmt->bind_param("s", $_POST['tel_no']);
if (!$result) die("bind_param エラー:".$db->error);
$result = $stmt->execute();
if (!$result) die("execte エラー:".$db->error);
$result = $stmt->bind_result($id, $c_id, $tel, $address);
if (!$result) die("bind_result エラー:".$db->error);
print "<table><tr><th>id</th><th>c_id</th><th>name</th><th>address</th>\n";
while ($stmt->fetch()) {
print "<tr><td>$id</td><td>$c_id</td><td>$tel</td><td>$address</td></tr>\n";
}
$stmt->close();
$db->close();
---ここまで---


> -> はどういった意味なのか教えていただけないでしょうか?
「->」は、クラスのインスタンス参照を示す演算子です。

1行目の「$db = new mysqli…」で、mysqli 型のデータ(インスタンス)を作成しており、
「$stmt = $db->prepare(…)」は、mysqli型のデータ$db に対して、メソッド(関数) prepare を呼び出しています)
クラスについてはここで簡単に語れるようなものではありませんので、詳しくはPHPの「クラス」について勉強してください。
    • good
    • 0
この回答へのお礼

何度もありがとうございます。
そして何度もすみません。

早速教えていただいた記述を試してみたのですが、

Warning: mysqli_stmt::bind_result() [mysqli-stmt.bind-result]: Number of bind variables doesn't match number of fields in prepared statement in C:\xampp\htdocs\tel_search.php on line 21
bind_result エラー:

というエラーになってしまいます。
21行目は
$result = $stmt->bind_result($id, $c_id, $tel, $address);
の部分です。

私の設定とかがまずいのでしょうか?
本当にすみません。

何卒よろしくお願い致します。

お礼日時:2011/04/20 14:44

> 丁寧に解説までしていただいたのですが、現在DBはmysqlでDBへのアクセスはphpmyadminを


使用しています。


phpMyAdmin は、Web経由で直接MySQLのDBを読み書きするツールです。
PHPのアプリケーションから phpMyAdmin を使うことはできません。

PHP から MySQL のDBにアクセスする方法にはいくつかあります。その代表的なのが「mysql」「mysqli」「PDO」です。

mysql: http://www.php.net/manual/ja/book.mysql.php
mysqli: http://php.net/manual/ja/book.mysqli.php
PDO: http://www.php.net/manual/ja/book.pdo.php

どれを使っても PHP プログラムからMySQLのDBにアクセスできます。
どれが使えるからはPHPサーバのインストール状況次第です。

mysqlは一番古いライブラリであり、設計仕様が古いのであまりお薦めできません。mysqliはmysqlの改良型ライブラリ。
PDOはMySQLにもアクセス可能な、MySQLに限定されない汎用のDBアクセスライブラリです。
今後の事を考えると、出来ればPDOかmysqliを使うべきです。
    • good
    • 0
この回答へのお礼

mtaka2様

ご回答ありがとうございます。
mtaka2様の仰る通りにとりあえずmysqliで作成するようにしました。

それで最初に教えていただいた記述で試してみたのですが、
特にエラーは出ないのですが結果が表示できません。。。

現在の状況がこちらです。

・xamppでsqliが使えるように設定(phpmyadminでPHP 拡張: mysqliと表示されている)
接続環境は host:localhost user_name:root password:なし
・torysというDBにcustomerというテーブルを作っていて、id,c_id,name,tel,addressという
 フィールドを用意している。(とりあえず2名分だけ登録されている)

index.htmlのフォーム
<form id="tel" name="tel" method="post" action="tel_search.php">
<dl>
<dt>
<label for="tel_no">電話番号</label>
</dt>
<dd>
<input name="tel_no" type="text" id="tel_no" size="20" maxlength="255" style="ime-mode:disabled" />
</dd>
</dl>
<input type ="submit" value="検索する" />
</form>

tel_search.php
(htmlの部分は割愛)
<?php
$db = new mysqli('localhost', 'root', '','torys');
$sql = "SELECT * FROM `customer` WHERE `tel` = ?";
$stmt = $db->prepare($sql);
$stmt->bind_param("s", $_POST['tel_no']);
$stmt->execute();
?>
(htmlの部分は割愛)

という状態です。

これで、customerテーブルに登録された人の情報を電話番号から探して表示するにはどうしたら
良いでしょうか?


あともしよければ
$stmt->execute();
の部分などの -> はどういった意味なのか教えていただけないでしょうか?

本当にど素人で申し訳ありません。
よろしくお願い致します。

お礼日時:2011/04/20 13:22

まともなWebアプリなら、「prepared statement」を使います。



DBへのアクセス方法に何を使われているのかわかりませんが、例えばmysqliなら、

---ここから---
$db = new mysqli(…);
$sql = "SELECT * FROM `テーブル名` WHERE `tel` = ?";
$stmt = $db->prepare($sql);
$stmt->bind_param("s", $_POST[tel]);
$stmt->execute();
---ここまで---

といった感じです。
「prepared statement」を使うと、SQL文で「?」にしている部分について、その内容を別途指定できるのです。
上述の記述なら、`tel`=? の ? の部分に $_POST[tel] の値を入れてDB検索が行われます。

mysqliで説明しましたが、PDO などでも関数名は違いますが同様の記述が可能です。
mysqli: http://www.php.net/manual/ja/mysqli.prepare.php
PDO: http://www.php.net/manual/ja/pdo.prepare.php

mysql は、prepared statement が使えませんので、出来れば mysqli か PDO を使いましょう。


なお、その手のアプリの参考例としてよく見受けられる手軽な方法として
$sql = "SELECT * FROM `テーブル名` WHERE `tel` = `".$_POST[tel]."`";
のように、変数を埋め込んだSQL文字列を生成するというものがありますが、
こういうやりかたは、絶対に行ってはいけません。
「SQLインジェクション」という、不正なパラメータを指定することでDBに侵入・改竄などを行うという攻撃の穴になってしまいます。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。

丁寧に解説までしていただいたのですが、現在DBはmysqlでDBへのアクセスはphpmyadminを
使用しています。

この環境でやろうと思うと難しいのでしょうか?
会社で使うとかいうものでもなく、簡略化したようなものでも大丈夫なのですが…

もし簡単なやり方があればそちらも教えていただけると大変助かります。

お礼日時:2011/04/20 09:27

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QN-04CのGoogle検索履歴の削除

ホーム画面上にあるGoogle検索で、文字を入力しようとすると過去の検索履歴が表示されるのですが、この検索履歴を削除する方法を教えて下さい。

(1)Google検索ウィジェットをタップし、検索画面をひらきます
 →このときに表示される検索履歴を削除したいのです!
(2)MENUボタン押下
(3)「検索設定」押下
(4)「Google検索の設定」押下
(5)「入力候補の表示」にチェックを入れない
 →チェックを入れない場合、「検索履歴」はグレーになっていて押下できない。
以上の操作では検索履歴は削除されません。
仮に、
(5)「入力候補の表示」にチェックを入れる
 →「検索履歴」はチェック入れられるようになるが、検索履歴を表示したくないので、チェックは入れない。
というようにしても検索履歴は残ったままで削除されません。
さらに、「検索履歴の管理」を押下すると「ウェブ履歴を利用すれば、検索がさらに便利に」というサイトが開きますが、このサイトから行えば検索履歴が削除されるのか不明です。
よろしくお願い致します。

Aベストアンサー

履歴消しゴムを使わないと削除出来ないです。
履歴消しゴム
https://play.google.com/store/apps/details?id=jp.androdev.historyeraser&feature=search_result#?t=W251bGwsMSwxLDEsImpwLmFuZHJvZGV2Lmhpc3RvcnllcmFzZXIiXQ..

Qphp+MySqlでの検索ページ

検索フォームを作成し、結果を別ページに表示したいと思っておりますが、うまくいかないので質問させて頂きます。

・状況
検索ワードが部分一致での結果は表示できるのですが、Yahooのように複数検索すると結果が表示されません。
また、検索ワードの前後に半角スペースや全角スペースなどを入れても同様です。

・ソース
検索フォーム側

<form id="form1" name="form1" method="get" action="search.php">
<label for="textfield"></label>
<input type="text" name="title" id="textfield" />
<input type="submit" name="button" id="button" value="検索" />
</form>

検索結果側(search.php)

<?php require_once('Connections/tm.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}

$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}

$colname_search = "-1";
if (isset($_GET['title'])) {
$colname_search = $_GET['title'];
}
mysql_select_db($database_tm, $tm);
$query_search = sprintf("SELECT * FROM posts WHERE title LIKE %s ORDER BY title DESC", GetSQLValueString("%" . $colname_search . "%", "text"));
$search = mysql_query($query_search, $tm) or die(mysql_error());
$row_search = mysql_fetch_assoc($search);
$totalRows_search = mysql_num_rows($search);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "ttp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="ttp://www.w3.org/1999/xhtml">
<head>
<meta ttp-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無題ドキュメント</title>
</head>
<body>
<table width="725" border="1" cellspacing="0" cellpadding="0">
<tr>
<th width="120" scope="col">タイトル</th>
<th width="120" scope="col">内容</th>
<th width="120" scope="col">名前</th>
</tr>
<tr>
<td><?php echo $row_search['title']; ?></td>
<td><?php echo $row_search['message']; ?></td>
<td><?php echo $row_search['n_name']; ?></td>
</tr>
</table>
</body>
</html>
<?php
mysql_free_result($search);
?>

※検索結果側はテスト段階のため、まだ結果を一件のみ表示されるだけとなっています。

ネットで調べると
・全角スペースを半角に揃える
・orやandを使用する
らしき所までしか分かりませんでした。。。
出来れば詳しいソースや参考サイト等がありましたらご伝授をお願い致します。

検索フォームを作成し、結果を別ページに表示したいと思っておりますが、うまくいかないので質問させて頂きます。

・状況
検索ワードが部分一致での結果は表示できるのですが、Yahooのように複数検索すると結果が表示されません。
また、検索ワードの前後に半角スペースや全角スペースなどを入れても同様です。

・ソース
検索フォーム側

<form id="form1" name="form1" method="get" action="search.php">
<label for="textfield"></label>
<input type="text" name="title" id="textfield" />
<input ty...続きを読む

Aベストアンサー

複数の文字をand検索するのであれば

WHERE 1
AND `検索フィールド` LIKE '%検索ワード1%'
AND `検索フィールド` LIKE '%検索ワード2%'
AND `検索フィールド` LIKE '%検索ワード3%'
・・・

とします。OR検索なら
WHERE 1
(`検索フィールド` LIKE '%検索ワード1%'
OR `検索フィールド` LIKE '%検索ワード2%'
OR `検索フィールド` LIKE '%検索ワード3%'
・・・
)

みたいな感じです。

あとは受け取ったワードをそのロジックにあてはめるよう
PHP側でスペースで分割してループをすればいいでしょう

Q検索履歴の削除

gooでもyahooでも検索の履歴の削除の仕方がわかりません・・・
ツールで閲覧履歴の削除はできるのですが検索履歴が削除されません!!
どうしたらいいんでしょうか???

Aベストアンサー

こちらの方法で如何ですか
http://121ware.com/qasearch/1007/app/servlet/qadoc?QID=003076
http://121ware.com/qasearch/1007/app/servlet/qadoc?QID=009174

QPHP+MySQL で検索結果を横並びに表示させたい

PHPとMySQLを独学で勉強し始めたところなのですが
下記の様に書いてみたところ
結果(画像)の表示が縦並びになってしまいます。
どうにか横並びに表示できないでしょうか?
<html>
<head><title>タイトル</title></head>
<body>
<table>
<?php
$host = "localhost";
if (!$conn = mysql_connect($host, "ユーザー", "パス")){
die("MySQL接続エラー.<br />");
}
mysql_select_db("データベース名", $conn);
$sql = "SELECT * FROM 01_table WHERE on ='1'";
$res = mysql_query($sql,$conn);
while($row = mysql_fetch_array($res)) {
print("<tr>");
print("<td>".$row["img"]);
print("</td>");
print("</tr>");
}
mysql_free_result($res);
?>
</table>
</body>
</html>
※01_tableのonには「0」か「1」を入れてあり
 imgには 「<a href="リンク先アド"><img src="画像のアド"></a>」
 を入れてあります。
基礎が無く、勘だけで作ってますので根本的に間違ってるかもしれないのですが よろしくお願いします。

PHPとMySQLを独学で勉強し始めたところなのですが
下記の様に書いてみたところ
結果(画像)の表示が縦並びになってしまいます。
どうにか横並びに表示できないでしょうか?
<html>
<head><title>タイトル</title></head>
<body>
<table>
<?php
$host = "localhost";
if (!$conn = mysql_connect($host, "ユーザー", "パス")){
die("MySQL接続エラー.<br />");
}
mysql_select_db("データベース名", $conn);
$sql = "SELECT * FROM 01_table WHERE on ='1'";
$res = mysql_query($sql,$conn);
w...続きを読む

Aベストアンサー

while内で<tr>と<td>を繰り返せば縦になるのは当たり前です
<tr>を外に出すとどうなるかやってみてください

print("<tr>");
while($row = mysql_fetch_array($res)) {
print("<td>".$row["img"]);
print("</td>");
}
print("</tr>");

Q検索履歴の削除

Yahooで、いつも検索しているのですが、
パソコンによって、検索の窓をダブルクリックすると過去の検索文字が残っているパソコンがあります。
アドレス欄は空っぽで、残っていません。
ちなみに0SはXPです。
人に私の検索履歴を見て欲しくないので、削除したいのですが、
履歴の削除は知っていますが、検索履歴の削除がわかりません。
削除方法を教えていただけないでしょうか。
よろしくお願いいたします。

Aベストアンサー

はじめまして。

>履歴の削除は知っていますが、検索履歴の削除がわかりません。

オートコンプリートの事ですね。

以下の様に「オートコンプリートをクリア」して下さい。↓
http://www.katch.ne.jp/~aok/contents/privacy_security/018.html
また、
今後使用しないのであれば
「オートコンプリートの使用目的」の(レ)をはずして下さい。

QPHP+MySQL初心者・参考サイトなどがあれば...

独学でPHPをしていて、データの管理にMySQLを使用しようと思います。
とりあえずMySQLをインストールしてみたのですが、まず何から覚えていけばいいのかわかりません。
どこか参考になるようなサイトなどはないでしょうか?
それらしいワードで検索してみましたが、よさそうなサイトが見つからなかったのでここで聞いてみようと思いました。
どなたかお暇な時にでもご回答お願いします。

Aベストアンサー

PHPとMySQLのつなぎの部分は確かにありますが、基本的には別物として考えた方がよいかとおもいます。

PHPについては、すでにこれまで勉強されているようですから、いったんおいておくとして。

MySQL(別に他のDBでもかまいませんが)については、MySQLの入門書を1冊購入されてみてはいかがでしょうか。
・ユーザーと権限管理
・データベースの作成
・テーブルの作成
・INSERT
・SELECT
・UPDATE
・DELETE
あたりがとりあえずわかれば、いろいろなことができるようになるとおもいます。

参考書などでは、上記の順番にはなっていないことが多いです。
しかし、独学でやる場合、どうしても学習用のDBやテーブル、データも自分で作成することになるために、上記のような順番になってしまうかとおもいます。

・ユーザーと権限管理
とりあえず、ユーザーを作って、そのユーザーにデータベース作ったりする権限を与えられればよいかとおもいます。
公開するときなどは、権限についてある程度は知らないと適切な権限を与えられないかもしれませんが、最初としては、とりあえずユーザー作って次項以降を出来るようにできればよいかと。

・データベースの作成
SQLを学ぶにはとりあえずデータベースがないとお話になりませんので、データベースを作れればここもとりあえずは良いかとおもいます。
文字コード関係なんかは知らないと問題が後でおこるかもしれません。

・テーブルの作成
こちらもとりあえずの勉強に必要になります。
データ型も考慮してとりあえず作ってみればよいかなと。

・INSERT
テーブルにデータがないとSELECTなど他のができないので、まずはINSERT文で、データをつっこんでみましょう。

・SELECT
INSERTでつっこんだデータをいろいろな条件などでSELECTしてとってきましょう。

・UPDATE
INSERTでつっこんだデータを更新してみる。

・DELETE
INSERTでつっこんだデータを削除してみる。

と、いうあたりが参考書のまるうつしでもできれば、それぞれに関連することをいろいろと詳しく見ていけばよいかなとおもいます。

PHPとMySQLのつなぎの部分は確かにありますが、基本的には別物として考えた方がよいかとおもいます。

PHPについては、すでにこれまで勉強されているようですから、いったんおいておくとして。

MySQL(別に他のDBでもかまいませんが)については、MySQLの入門書を1冊購入されてみてはいかがでしょうか。
・ユーザーと権限管理
・データベースの作成
・テーブルの作成
・INSERT
・SELECT
・UPDATE
・DELETE
あたりがとりあえずわかれば、いろいろなことができるようになるとおもいます。

参考書な...続きを読む

Q検索履歴削除方法

Yahoo!ホームページでの検索履歴削除は
「ツール」→「インターネットオプション」→「コンテンツ(タブ)」→「オートコンプリート」で履歴削除できましたが、IEに接続した際にアドレスを入力する部分の下の検索ボタンから検索した場合の履歴の削除はどうやるのでしょうか。
説明が分かりづらいと思いますが、ご教示願います。

Aベストアンサー

★履歴の削除はレジストリで行えます。
・毎回、パソコン起動時に履歴を削除したいのならばフリーソフトの『窓の手』で
 行えます。→http://www.asahi-net.or.jp/~vr4m-ikw/
・また、『インターネット・オプション』の『オートコンプリート』で『Webアドレス』
 のチェックを外せば履歴は残りません。
・それでは、レジストリでの履歴削除方法を紹介します。

操作:
・まず、すべての『インターネット・エクスプローラ』を終了して下さい。
・『Windows』+『R』キーを押して、『regedit』と入力してレジストリ・エディタを
 起動して下さい。→やたらに削除などの操作をしなければレジストリ操作は安全!
・HKEY_CURRENT_USER
 └Software
  └Microsoft
   └Internet Explorer
    └TypedURLs を開く⇒インターネット・エクスプローラの『アドレス・バー』履歴
・右画面で『url1』~『url??』の名前がありますよね。数字の連番です。
・上記の名前を全て削除すれば履歴をクリアできます。
・削除するときは、『url1』~『url??』をシフトキーを押しながら選択して右メニュー
 から削除します。
・削除したら、レジストリ・エディタを終了します。
・以上。おわり。→安全性を求めるのなら、または自動化したい場合は『窓の手』を
 ダウンロードしてインストールしましょう。便利です。私も使っています。

参考URL:http://www.asahi-net.or.jp/~vr4m-ikw/

★履歴の削除はレジストリで行えます。
・毎回、パソコン起動時に履歴を削除したいのならばフリーソフトの『窓の手』で
 行えます。→http://www.asahi-net.or.jp/~vr4m-ikw/
・また、『インターネット・オプション』の『オートコンプリート』で『Webアドレス』
 のチェックを外せば履歴は残りません。
・それでは、レジストリでの履歴削除方法を紹介します。

操作:
・まず、すべての『インターネット・エクスプローラ』を終了して下さい。
・『Windows』+『R』キーを押して、『regedit』と入力してレ...続きを読む

QPHP+MySQLで簡単な商品の検索サイトを作ってます。

PHP+MySQLで簡単な商品の検索サイトを作ってます。

商品数が5万件程度なら一つのテーブルで問題ないのですが、
30万件とか100万件とかになると、処理に時間がかかってしまいます。

処理を早くするために普通はどのよに対処するのですか?
例えば、10万件毎にテーブルを分けていくのですか?

Aベストアンサー

>30万件とか100万件とかになると、処理に時間がかかってしまいます。

100万件程度ならそれほど負荷にはならないと思います。
まずはテーブル構造をきちんとすること
整合性をとるための正規化は必要ですが、正規化すればはやくなる
というものではありません。高速化のためにはあえて冗長な
構造にする手もあります。

それとインデックスをうまくはること。
そして当然ながらSQLをチューニングすることです。

QMSNホームページのウェブ検索履歴削除方法がわからない

MSNホームページのウェブ検索の履歴削除方法が分かりません。MSNサーチの履歴の削除はウィンドウの左のMANロゴをクリックして履歴の削除ができるのは理解していますが,MSNホームのウェブ検索の履歴削除がどうしてもできません。どなたか教えてください。

Aベストアンサー

ツール

インターネットオプション

コンテンツ

オートコンプリート

フォームのクリア

これで消えます。すべてのフォームに記入している情報が削除されます。
googleとか掲示板での名前とかがそれにあたります。
なんかやばそうに聞こえますがそんなことはありません。

Q【MySQL+php】 MySQL が認識されない

windows vista home
apache2.2
php5.2.3
MySQL5.0
上記の環境です。

php.iniのextensionのところで、
extension=php_mbstring.dll の行頭のセミコロンを
つけたり外したりすればphpinfoで見た確認画面にも反映されます。
extension=php_mysql.dll の行頭のセミコロンを
つけたり外したりしてもどうしてもMySQLが組み込まれません。

MySQL単体ではインストールもしてありプロンプト画面から
操作できます。

インストール順はMySQL→apache→phpの順でしました。

MySQLをphpで使うためにはどうすればよいでしょうか。
よろしくお願いいたします。

Aベストアンサー

windows版php5.x では、php_mysql.dllの他に、libmysql.dllファイルをpathの通ったところに置くようにと有りましたけど。
それから、MySQL5.0の機能を十分に利用するには、php_mysqli.dllも必要です。
それから、MySQL5.0のサーバーはあらかじめサービスで動作させてありますよね?

参考URL:http://php.s3.to/man/ref.mysql.html


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング