お世話になります。
phpの基本を勉強している初心者です。
現在、phpを使ってmysqlのlocalhostsの'userdata'テーブルに,投稿番号,名前,コメント,日付,パスワードのレコードを挿入したいのですが、上手くいきません。
web上でいろいろ検索して、追加してみましたが、どれもうまくいきませんでした。
データベースの文字コードはutf8_general_ci
ソースコードの方の文字コードもutf-8にしてあります。
以下が私の記述した複数のコードです。
php
1<?php 2 3//変数 4$name = $_POST['user']; 5$com = $_POST['comment']; 6$pas = $_POST['pass']; 7 8//日本語、アルファベットが受け取れない 9$db = mysqli_connect('localhost','root','1234','db')or die(mysqli_connnect_error()); 10mysqli_set_charset($db, 'utf-8'); 11//%sを%dにしたらエラーは消えるが、文字を受け取らなくなる。 12$sql = sprintf('INSERT INTO userdata SET name = %s, comment = %s, pass = %s', 13 14//値がnameとcommentとpassならnameとcommentとpassの属性が空のレコードが追加される。 15//アラビア数字なら通常通り追加される。 16//それ以外はエラーで、unkown column $_POST['user']の値が表示 17mysqli_real_escape_string($db, $_POST['user']), 18mysqli_real_escape_string($db, $_POST['comment']), 19mysqli_real_escape_string($db, $_POST['pass']) 20); 21 22mysqli_query($db, $sql) or die(mysqli_error($db)); 23 24?> 25
レコードには、数字のみ反映されます。
他にもPDOなども試してみました。
php
1//変数宣言 2$name = $_POST['user']; 3$com = $_POST['comment']; 4$pas = $_POST['pass']; 5//実行すると以下の行でエラー 6//Notice: Undefined variable: pdo in C:\xampp\htdocs\php_app_kadai\database.php on line 13 7//Fatal error: Call to a member function prepare() on null in C:\xampp\htdocs\php_app_kadai\database.php on line 13 8 9$stmt = $pdo -> prepare("INSERT INTO userdata (name, comment, pass) VALUES (:name, :com, :pas)"); 10$stmt->bindParam(':name', $name, PDO::PARAM_STR); 11$stmt->bindParam(':com', $com, PDO::PARAM_STR); 12$stmt->bindParam(':pas', $pas, PDO::PARAM_STR); 13$stmt->execute(); 14
php
1$con = mysql_connect("localhost","root","1234") 2or die("MySQLに接続できません。"); 3mysql_select_db('userdata'); 4$sql = "SET CHARACTER SET UTF8"; 5$result = mysql_query($sql); 6 7$sql = "INSERT INTO `userdata` (`name`, `comment`, `pass`) VALUES (`$name`,`$com`,`$pas`)"; 8$result = mysql_query($sql); 9//以下の行でエラー 10//Warning: mysql_free_result() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\php_app_kadai\database.php on line 52 11mysql_free_result($result); 12mysql_close($con); 13
php
1$name = $_POST['user']; 2$com = $_POST['comment']; 3$pas = $_POST['pass']; 4 5//エラー無しデータベースに反映されない 6$db = new PDO("mysql:host:localhost;dbname=db","root","1234"); 7$st = $db->prepare("INSERT INTO userdata (name, comment,pass) VALUES (?,?,?)"); 8$st->bindParam(1,$name); 9$st->bindParam(2,$com); 10$st->bindParam(3,$pas); 11$st->execute(); 12//行数は0でレコードは増えなかった 13print mysql_affected_rows(); 14
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/08/23 09:38
2015/08/23 09:58
退会済みユーザー
2015/08/23 10:03
2016/02/23 17:36