初心者がphpとmySQLの英語のフリーソースを変更する際の注意点

このQ&Aのポイント
  • 数値しか読み込まない、また計算されてしまう問題があります。
  • user_urlとuser_telには数字しか入力できず、入力値によってエラーが発生します。
  • 日本語の文字化けや英語の入力にも制限がある問題があります。
回答を見る
  • ベストアンサー

数値しか読み込まない、また計算されてしまいます。

全くの初心者ですがphpとmySQLの英語のフリーソースをxamppで変更しようとしています 以下の式で $sql = "INSERT INTO tbl_user (user_name, user_password, user_url, user_tel, user_regdate) VALUES ('$userName', md5('$password'), $userurl, $usertel,NOW())"; user_nameには漢字やカナが入るのですが、user_url, user_telには数字しか入りません。 また10-2と入力すると計算されて8となってしまいます。 user_url, user_telに英語(hoge)を入力するとmySQLからUnknown column 'hoge' in 'field list'とエラーが出ます。(数字ですとmysqlにちゃんと入力されています。) またphpmyadmin側から英語を入力することはできます。(が日本語は文字化けしていました。) user_url,には英語で入力を user_telには-付きの電話番号を入力したいと思っていますが これはどのような原因が考えられますでしょうか? どうかよろしくお願い致します。

  • MySQL
  • 回答数1
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

> $userurl, $usertel '$userurl', '$usertel' ですね。 バリデートは適宜おこなってください

tansansooda
質問者

お礼

ご回答ありがとうございます。 解決しました! ほんとに助かりました。 半日考えました。 なかなか気がつきませんでした。 たしかに'$userName'にはついていました。 初心者に教えて頂きありがとうございます。 これからも是非よろしくお願い致します。

関連するQ&A

  • ローカルのMYSQLにdosプロンプトでアクセスできる?

    先日、XAMPPをインストールしました。 dosプロンプトからMYSQLにアクセスしようとしてもアクセスできません。 E:\xampp\mysql\bin>mysql ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password:NO) というエラー表示がでてきます。 ちなみにxamppコントロールパネルを見ても「起動」してますしphpmyadminも起動できます。 パスワードは・・知らないうちに何か設定してたのかな??思い出せない。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • Mysqlに入れません

    PHPのパッケージxamppでMySQL 5.0.51aをインストールしています。 しかしどうあがいてもMySQLに入れません。 C:\xampp\mysql\bin>mysql ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO) C:\xampp\mysql\bin>mysql -u root -p Enter password: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) C:\xampp\mysql\bin>mysql -u root -p root Enter password: **** ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 教えてください。お願いいたします。

    • ベストアンサー
    • MySQL
  • セッションをログインについて

    はじめまして。 今、セッションを使ったログインのページを作っています。 流れは、 1.ログインページでIDとパスワードを入力。 2.入力したID・パスワードがあらかじめMysqlに保存してあったのと一致していたら会員ページに移動。 3.セッションにID・パスワードを保存してブラウザを閉じない限り、次回はログイン無しで会員ページに直接いけるようにする。セッションに保存されてないときはログインページにもどす。 以上の流れにそってプログラムを作りました しかし1・2は上手くいったのですが3の部分がうまくいきません。セッションにIDとパスワードを保存することができてるようなのですが、ブラウザを閉じずに、いったん別にページに行き、もう一度会員ページにもどろうとすると、ログインページ戻されてしまい、もう一度ログインしなければいけません。 以下に今回のプログラムを書きました。このプログラムのどこを直せば、いいのかお分かりになる方いらっしゃいましたらアドバイスのほうよろしくお願いします。 使用環境は PHP 5.2.5(xampp使用) MySQL 5.0.51a register_globals = Onになっています。 /*ログインページは省略しました。パスワードとユーザーIDを入力してこのページに飛びます。*/ <?php function redirect($url) { header("Location: ".$url); exit; } session_start(); /*保存していたセッションが存在するか確認なければログインのページにもどす。$_SESSION['username']) の部分を$_POST…にしたのですがそれでも結果は同じでした。*/ if(empty($_SESSION['username']) || empty($_SESSION['password'])) redirect("loginpage.php"); $user = $_POST['username']; $pass = md5($_POST['password']); /*Mysqlへ接続。セッションの問題が解決したらMysql用のクラスを作る予定です。*/ $dbHost = "localhost"; $dbUser = "*****"; $dbPass = "******"; $dbDatabase = "mysql"; $db = mysql_connect("$dbHost", "$dbUser", "$dbPass") or die ("Error connecting to database."); mysql_select_db("$dbDatabase", $db) or die ("Couldn't select the database."); $result=mysql_query("select * from users where username='$user' AND password='$pass'", $db); $rowCheck = mysql_num_rows($result); /*ID・パスワードが間違ってたら、ログインページに戻す。*/ if(empty($rowCheck)) redirect("loginpage.php"); $row = mysql_fetch_array($result); /*IDとパスワードをセッションに保存*/ $_SESSION['username'] = $user; $_SESSION['password'] = $pass; if($rowCheck > 0) { while($row = mysql_fetch_array($result)) { } /*ログイン成功したら会員ページを表示。*/ echo "Login Succeeded!".$_SESSION['username'];/*←セッションに保存されてるかのテスト。ちゃんと表示されました*/ include("C:/xampp/htdocs/cvptoylibrary.com.au/assets/includes/link1.php"); include("C:/xampp/htdocs/cvptoylibrary.com.au/assets/includes/link3.php"); } else { /*ID・パスワードを間違えてたらログインページに戻す。*/ echo 'Incorrect login name or password. Please try again.'; redirect("loginPage.php" ); } ?>

    • ベストアンサー
    • PHP
  • ハッシュ値のパスワードMYSQL検索で一致しない

    PHPでMYSQLにハッシュ値にしたパスワードを登録して、同じハッシュ値で検索を行いましたが、どうしても検索結果で一致しません。 パスワードの文字列をMD5を使ってハッシュ値に変換して次のようにMYSQLに登録しました。 $email = htmlspecialchars($_POST["email"]); $user_name = htmlspecialchars($_POST["user_name"]); $password = md5(htmlspecialchars($_POST["password"])); $sql = 'INSERT INTO user_tbl (email,user_name,password) VALUES ( "' . $email . '","' . $user_name . '","' . $password . '" )'; $sth = $dd->prepare($sql); $sth->execute( array() ); $qid = $dd->lastInsertId(); ※user_tblの定義のこんな感じにしてあります。 CREATE TABLE user_tbl ( email varchar(50) NOT NULL, user_name varchar(20) NOT NULL, password VARCHAR(50) NOT NULL ); 検索する処理でSQL等は次のように処理しましたが、検索結果がゼロ件でした。 $email = htmlspecialchars($_POST["email"]); $beforepass = md5(htmlspecialchars($_POST["beforepass"])); $afterpass = md5(htmlspecialchars($_POST["afterpass"])); $sql = 'SELECT count(password) FROM user_tbl WHERE email = "' . $email . '" and password = "' . $beforepass . '"'; $q = $dd->prepare( $sql ); $q->execute(); if($q->fetchColumn() == 1){ //ここでパスワードが一致した場合の処理を書く } そこで次の2パターンのようにSQL文を少し変えてみたらそれぞれの検索結果が1件でした。 $sql = 'SELECT count(password) FROM user_tbl WHERE email = "' . $email . '" and password = "' . $beforepass . '"';                     ↓ $sql = 'SELECT count(password) FROM user_tbl WHERE email = "' . $email . '"'; $sql = 'SELECT count(password) FROM user_tbl WHERE email = "' . $email . '" and password = "' . $beforepass . '"';                     ↓ $sql = 'SELECT count(password) FROM user_tbl WHERE email = "' . $email . '" and user_name = "tanaka"'; (MYSQLのuser_tblのuser_nameには'tanaka'と入っている状態で実行したものです) SQLに渡される各変数には文字列が代入済みであることが確認できています。 MD5でハッシュ化した文字列同士を比較してどうして検索結果が一致しないのでしょうか? ちなみに検索したいパスワードのハッシュ値とDBに格納されているパスワードのハッシュ値を目で比較したら一致していました。 以上です。 ハッシュ値を検索条件に入れる場合に特殊な事をするのでしょうか? ヒントだけでもよいので教えて下さい。 宜しくお願いします。 os: windows 7 eclipse: Version: 4.2.0 Build SDK: Android 4.1(API 16) PHP 5

    • ベストアンサー
    • PHP
  • PHP+ApacheでMySQLに接続できない。プロンプトからは可能

    以下のようなコードでmysqltest.phpというファイルを作成しました。 これを php -f mysqltest.php とやると成功します。 しかし、ブラウザでhttp://パス/mysqltext.phpとやると失敗します。 双方がどう違うのか教えていただけないでしょうか。 以下コードです。 ----------------------- <html> <body> <?php $hostname = "localhost:/var/lib/mysql/mysql.sock"; $name = "root"; $password = "pass"; printf( "hostname:%s<br>\n" , $hostname ); printf( "username:%s<br>\n" , $name ); printf( "password:%s<br>\n" , $password ); mysql_connect($hostname, $name, $password ) or die('cannot connect to database'); ?> </body> </html> ---------------------------------- 単に「ホスト:ポート」「ユーザネーム」「パスワード」を指定してconnectしているだけです。 コマンドラインから実行すると成功します ---------------------- <html> <body> hostname:localhost:/var/lib/mysql/mysql.sock<br> username:root<br> password:komaba<br> </body> </html> ---------------------------- ブラウザで実行すると失敗します。 ----------------------------- hostname:localhost:/var/lib/mysql/mysql.sock username:root password:pass cannot connect to database -----------------------------

  • コマンドプロンプトからMySQLに接続できない

    こんばんは。 スタート→すべてのプログラム→MySQL→MySQL Server 5.0→MySQL Command Line Client からパスワードを入力するとMySQLに接続できるのですが、コマンドプロンプトから mysql -u username -p を実行してしてパスワードを入力すると ERROR 1045 (28000): Access denied for user 'username'@'localhost' (using password: YES) と表示されて接続できません。 コマンドプロンプトから接続するにはどうすればいいのでしょうか。 宜しくお願い致します。

  • 簡単なif文でちゃんと分岐しません

    今参考書を見ながらやっていますがうまくいきません。 postからusernameとpasswordの値を受け取って処理する スクリプトなんですが、うまく作動してくれません。 ■問題点 分岐点が4箇所ありますが、 パスワードだけ間違っても、すべて■1■ ログイン処理状態になります。 どうしてもパスワード再設定の画面に切り替わりません。 入力されたデータはデータベースにきちんと入ります。 3日間これで悩んでいて、ついに投稿してみました。 こんなこともわからない私ですが なんとかお願い致します。 ----ここから---- <?php session_start(); $username = $_POST["username"]; $sql = "SELECT * FROM `art_users` WHERE `user_name` = '%{$username}%'"; $query = mysql_query($sql) or die("データ追加エラー" . mysql_error()); $record = mysql_fetch_array($query, MYSQL_ASSOC); if ( $_POST["mode"] == "login" && mysql_num_rows($query) > 0 && $_POST["password"] == $record["user_password"] ) { $_SESSION["userid"] = $record["user_id"]; header("Location: kaukau_top.php"); } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ログイン処理</title> </head> <body> <?php // ■1■ ログイン処理状態 if ( $_POST["mode"] == "login" ) { // 新規登録:クエリ実行結果が0行=既存ユーザー名と一致しない if ( mysql_num_rows($query) == 0 ) { echo '新規ユーザー登録<br>'; echo '<form action="kaukau_login.php" method="POST">'; echo '<input type="hidden" name="mode" value="register">'; echo '<input type="submit" value="登録">'; echo '</form>'; } // パスワードミス:クエリ実行結果のパスワードと入力されたパスワードが一致しない elseif ( $_POST["password"] != $record["user_password"] ) { echo 'パスワードが違います。<br>'; echo 'ひみつの質問に答えると、パスワードを変更できます。<br>'; echo '<form action="kaukau_login.php" method="POST">'; echo '<input type="hidden" name="username" value="' . $username . '">'; echo '<input type="hidden" name="mode" value="resetpassword">'; echo '<input type="submit" value="送信">'; echo '</form>'; } } // ■2■ パスワード再設定状態 elseif ( $_POST["mode"] == "resetpassword" ) { if( $record["user_answer"] == $_POST["answer"] ) { echo 'パスワード再設定<br>'; echo '<form action="kaukau_login.php" method="POST">'; echo '<input type="hidden" name="username" value="' . $username . '">'; echo '<input type="hidden" name="mode" value="modifypassword">'; echo '<input type="submit" value="登録">'; echo '</form>'; } else{ echo "ひみつの答えが違います"; } } // ■3■ 新規ユーザー登録状態 elseif ( $_POST["mode"] == "register" ) { if( $_POST["password"] == $_POST["confirm"] ) { $sql = "INSERT INTO users (user_name, user_password, user_question, user_answer) VALUES ("; $sql .= " '" . $_POST["username"] ."',"; $sql .= " '" . $_POST["password"] ."',"; $sql .= " '" . $_POST["question"] ."',"; $sql .= " '" . $_POST["answer"] ."')"; $result = mysql_query($sql); echo '登録しました。'; } else { echo 'パスワードを再確認してください。'; } } // ■4■ パスワード変更状態 elseif ( $_POST["mode"] == "modifypassword" ) { if ( $_POST["password"] == $_POST["confirm"] ) { $sql = "UPDATE users"; $sql .= " SET user_password = '" . $_POST["password"] . "'"; $sql .= " WHERE user_name = '" . $_POST["username"] . "'"; mysql_query( $db, $sql ); echo '登録しました。'; } else { echo 'パスワードを再確認してください。'; } } ?> </body> </html>

    • 締切済み
    • PHP
  • xamppでmysqlをインストールしましたが起動しません。

    すいません、自分でも色々調べてみたのですが、まったく解決できませんでした。どなたか分かる方いましたら教えてください。 PHPテスト環境を作るためにローカル使用を目的として xamppの1.6.6をつかってmysqlとphpmyadminをインストールしました。 しかし、mysqlとphpmyadminが起動できません。 また、今回より以前にも一度インストールした経験があり、そのときはポートが認識できないとかのエラーが起こり、結局それが解決できず、アンインストール・インストールを繰り返してしまいました。 phpmyadminはxampp自体をあらたにインストールしなおしたにもかかわらず、パスワードが一致しませんといってまったく受け付けてくれませんでした。 mysqlをコマンドプロンプト側から起動してみようと思いましたが、 C:\xampp\mysql\bin>-u root -p Enter password:******** Welcome to the MySQL monitor. Commands end with ; \g. というところまでは表示されるのですが、 それ以降表示されずにキーも受け付けません。 PHP・mysqlはまだまだ初心者でうまく扱えません。 どうか分かる方ご教授ください。よろしくお願いします。

  • xamppの設定の問題でしょうか。mysqlが全く使えません。

    PHPを独学しています。(プログラムはもちろん、PC自体、ほぼ初心者です) xamppでapacheとmysqlをインストールしたのですが、mysqlが(データベースが?)全く使えない状態です。 自分でいじったことは、 http://www.mtde.info/0210winxampp/winxampp_050.php ↑のページを参照しながら、 rootのパスワードの設定と、「xamppのディレクトリ制御」のユーザー名とパスワードの設定です。 (http://www.mtde.info/0210winxampp/winxampp_060.phpに書かれていることも設定しました) その後コマンドプロンプトで cd C:\xampp\mysql\binと入力し、(C:\xampp\mysql\bin> となり) ここでmysqlと入力することで 左側がmysql> と表示されるようにはなっているのですが、そこから何を打っても反応してくれません。(ただ改行されて、-> と表示されるだけなのです) 例えば、create database testdb と入力し、「testdb」というデータベースを作ろうと意図しても、作られた形跡はなく、 (show databases; としてやはり無反応ですし、PCでファイル検索しても出てきません) xamppの管理ツールのデモのCDコレクションをクリックしても、 Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'root'@'localhost' (using password: NO) in C:\xampp\htdocs\xampp\cds.php on line 77 データベースを接続できません! MySQLは稼動していますか?またはパスワードを変えませんでしたか? 上のように表示されます。xamppのコントロールパネルで「起動」しているのは間違いありません。 パスワードを変えたか?と聞かれたとき、思い浮かぶのは冒頭に書いたことだけです。 ならば、再度コマンドプロンプト上でパスワードを変更してみようと set password for root @localhost=password('12345'); などと入力してみても、パスワードが変更されることもありません。(冒頭で設定したパスワードのままです) 何をどのようにすれば、mysqlを使えるようになるのでしょうか? 教えてください。お願いします。

  • XAMPPでMySQLにアクセスできません

     はじめまして。ゴールデンウィークの中、お忙しい所、どなたかご存知の方がいたら、教えてください。  質問内容は、プログラミング言語のPHPとデータベースのMySQLに関してです。  XAMPPというソフトをインストールして、「XAMPP Control Panel」をクリックし、その中の「Apache」と「MySQL」をStartさせ「Running」と緑色の状態にしました。   その後、http://localhost/xampp のページにアクセスしたところ、「おめでとうございます: システム上にXAMPPが正しくインストールされました!」とxamppの画面がうまく表示されます。  しかし、「PhpMyAdmin」をクリックすると、以下のようなエラー画面が出てしまいます。 MySQLのメッセージ: #1045 - Access denied for user 'root'@'localhost' (using password: NO) MySQL サーバに接続しようとしましたが拒否されました。config.inc.php のホスト、ユーザ名、パスワードが MySQL サーバの管理者から与えられた情報と一致するか確認してください 何をどうしたらいいのでしょうか?config.inc.phpというファイルに問題があるのでしょうか?どなたかご存知の方がいたら教えてください。よろしくお願いします。