mysqlでデータベースを扱おうと試行錯誤しているのですがなかなかうまくいきません。
PHPを用いてmysqlに接続しphptestというデータベースのtweet_tblというテーブルに対してINSERT文を実行したいです。
lang
1<?php 2$connect = mysql_connect("localhost","31",""); 3 4if($connect){ 5 echo 1; 6}else{ 7 echo 2; 8} 9echo "<br>"; 10 11//SQLをUTF8形式で書くよ、という意味 12$result1 = mysql_query("SET NAMES utf8",$connect); 13 14if($result1){ 15 echo 1; 16}else{ 17 echo 2; 18} 19echo "<br>"; 20 21//phptestというデータベースに対してSQLを実行する 22$result2 = mysql_db_query( "phptest","insert tweet_tbl(account,contents,input_datetime) values('junchiba','test',sysdate())"); 23 24 25if($result2){ 26 echo 1; 27}else{ 28 echo 2; 29} 30 31echo "<br>"; 32 33//データベースとの接続を切る 34$result3 = mysql_close($connect); 35 36 37if($result3){ 38 echo 1; 39}else{ 40 echo 2; 41} 42echo "<br>"; 43?>
このコードの実行結果は
1
1
2
1
となります。
つまりmysql_db_query文がうまく実行できていないことから起こるエラーだと思っているのですがまずこちら間違いないでしょうか?
データベースの接続
utf8に文字コード設定
データベースとの接続を切断
の部分は返り値にtrueが返ってきているので問題ないと考えています。
クエリに手作業で
insert tweet_tbl(account,contents,input_datetime) values('junchiba','test',sysdate())
を入力して実行をするとエラーなしで成功するのですが
これをこのままコピペしてmysql_db_query文で実行するとなぜかエラーがでてしまいます。
なぜなのでしょうか?
phptestというデータベースは確かに作成しておりtweet_tblといったテーブル名にも間違いはないはずです。
他にエラーとなる理由は何かありますか?
ちなみに一番始めの
$connect = mysql_connect("localhost","31","");
の部分は普通
$connect = mysql_connect("localhost","root","");
と書くと思いますが、rootのまま実行すると実行結果は
2
2
2
2
となります。
31という数字は適当に入力してみるといけました。
ここの部分の謎もよく理解できておりません。
31だったらいける理由を教えていただきたいです。
MACを使っております。
MAMPを用いてmysqlとApacheを起動していてポート番号はそれぞれ
Apache:81
Nginx:8888
Mysql:3307
で接続しております。
これはポート番号80がなぜか使えなかったので自分なりに接続できる方法を探して見出した結果です
ポート番号が80で接続できていないからエラーが起こるのかな?という疑問も抱いたので記述しました。
よろしくお願いします。
--追記--
ユーザー認証や権限の問題だったようなので
新しくユーザーを作成しました
![イメージ説明]WIDTH:529
この状態で以下の文を実行すると
<?php $connect = mysql_connect("hiroki_%","hiroki",""); echo mysql_errno().": ".mysql_error()."<BR>"; エラーメッセージが 2005: Unknown MySQL server host 'hiroki_%' (20) のように表示されます。 (20)とはなんなのでしょうか?回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。