トップページ⇒php
1001コメント299KB

【PHP】下らねぇ質問はID出して書き込みやがれ 102

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん2010/12/18(土) 20:07:33ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 101
http://hibari.2ch.net/test/read.cgi/php/1289793607/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0809nobodyさん2011/01/21(金) 23:21:12ID:???
俺がやってあげるよ
0810nobodyさん2011/01/21(金) 23:24:38ID:???
>>809
やります宣言はいいからとっとと修正版上げろや
0811nobodyさん2011/01/21(金) 23:26:23ID:???
>>808
ここにいるのは態度がデカイだけのゴミだから
本気で探してるんなら「はてな」で金かけて質問したまえw
0812nobodyさん2011/01/21(金) 23:27:02ID:???
>>808
リアル人脈広げようぜ。
人脈がないなら、もう1桁報酬上げて頼んだほうがいい。

もしくは、これを機会に勉強しまくるんだな。
0813nobodyさん2011/01/21(金) 23:27:23ID:???
>>802
$this = null;
とかできなかったっけ?
試したら結果教えてね。
0814nobodyさん2011/01/21(金) 23:28:47ID:8ndmGcBV
データベースにSQLを追加したりで色々手間と時間とがかかると思います

所有ポイントに関しては、purchaseすれば、mygame_ls側のaccountdataテーブル内のreward_pointが正常に減るのです
ただ、購入後にinventoryテーブルにアイテムIDやらが正常に挿入されないという点です。
(要はそのキャラクターの元へアイテムが届いていない)
0815nobodyさん2011/01/21(金) 23:31:09ID:???
>>814
>ただ、購入後にinventoryテーブルにアイテムIDやらが正常に挿入されないという点です。
「購入後にinventoryテーブルにアイテムIDやらを挿入」する処理がどのファイルで
行われてるか書いてよ
0816nobodyさん2011/01/21(金) 23:33:27ID:8ndmGcBV
一応分かってる範囲だけ補足さえていただくと
Money(お金)は、rewards1.phpとspend1.php
それ以外のアイテムは、rewards2.php~9とspend2.php~9に処理記述してます。
問題はたぶん、このファイルのデータベースとの通信
テーブルとの送信命令がマッチしてないことにありそうなんですが詰んでます...
0817nobodyさん2011/01/21(金) 23:37:35ID:8ndmGcBV
お金は、mailテーブルへ
それ以外はinventoryテーブルへデータ送信するようにしてます。
外国に人にも一度聞いてみたのですが、データベースのテーブル構造と
php側の記述がマッチしてない可能性があるといわれました
0818nobodyさん2011/01/21(金) 23:41:29ID:???
>>807の質問が拷問に見えた
0819nobodyさん2011/01/21(金) 23:48:25ID:???
金出すから改造してよvol.3
http://hibari.2ch.net/test/read.cgi/php/1162147035/l50
0820nobodyさん2011/01/21(金) 23:55:24ID:???
HTML出力の仕方が斬新だね
意外とヒアドキュメントとかより便利かも
0821nobodyさん2011/01/21(金) 23:55:59ID:???
>>817
ソースは軽く読んだだけなので一般的なバグの例を

1. SQL関連のエラーメッセージが表示されないなら、条件分岐(if文)ではじかれて
そもそもmysql_query()を含む行が実行されていない。
2. SQLのUPDATE文を使うべきところでINSERT文を使っている。
0822nobodyさん2011/01/22(土) 00:01:01ID:???
>>820
なにが斬新?
0823nobodyさん2011/01/22(土) 00:03:35ID:???
>>822
関数宣言の中に

<?php
<h1><?php echo $Row['category']; ?></h1>
?>

みたいな文が出てくるあたり
0824nobodyさん2011/01/22(土) 00:04:52ID:???
?>
<h1><?php echo $Row['category']; ?></h1>
<?php

↑w
0825nobodyさん2011/01/22(土) 00:07:39ID:???
バカでも書ける言語仕様が生んだ悲劇。
0826nobodyさん2011/01/22(土) 00:14:32ID:???
PHPモード抜けてHTML出力はマニュアルにも載ってる基本中の基本だよ
0827nobodyさん2011/01/22(土) 00:15:12ID:???
PHPの唯一のいいところを悪くいうな
0828nobodyさん2011/01/22(土) 00:16:45ID:???
>>826
これ基本か?

function foo(){
?>
<h1>ほげほげ</h1>
<?php
...
}
0829nobodyさん2011/01/22(土) 00:25:53ID:???
>>817
spendpoints/buy_item.phpがないわけだが
0830nobodyさん2011/01/22(土) 00:37:59ID:???
>>828
いいじゃないか。そういう柔軟な書き方もできるということで。
仕様上の問題が無い以上、基本かどうかは個人の思想によるので議論しても無駄。
0831nobodyさん2011/01/22(土) 00:45:25ID:???
>>830
斬新て言ってるだけでだれも否定はしてないのだが
0832nobodyさん2011/01/22(土) 01:04:38ID:???
>>780 確かにエラーになるね。
0833nobodyさん2011/01/22(土) 01:06:12ID:???
>>798 本当に質問しているなら >>1
0834nobodyさん2011/01/22(土) 08:09:36ID:???
>>804
inventoryテーブルにINSERTされていないのであれば、spend/spend2から10.phpの41行にエラー表示いれて確認してみたらどうだろ
INSERTやUPDATEしてるとこはエラー処理したほうがいいとおもうけどね。

mysql_query("INSERT INTO inventory VALUES('$uniqueid','{$Row['itemid']}','{$Row['description']}','null','$Character','0','0','0','0','0','{$Row['itemid']}','0')") or die(mysql_error());
0835nobodyさん2011/01/22(土) 08:28:21ID:???
>>804
834に追記
一つ前のSELECTしている39-40行もレコードがあるかどうか判断していないので無かったときに41行のINSERTで
エラーが出る可能性もあるかな。

itemUniqueIdがPRIMARY KEY指定されているが、12行で
$uniqueid = rand(900001, 1000000);
しているところが問題かも。重複する可能性あり。

それとinventoryのテーブル見たら全部数値タイプじゃないですか
INSERT文の4個めの'null'は数値じゃないので、これでエラーになってるかも。
0836nobodyさん2011/01/22(土) 09:02:51ID:???
>>835
おれんとこでは'null'をINTに入れると0になった
たぶんsql_modeの設定が違うと思う
804のサーバがどうなってるか知らんが
0837nobodyさん2011/01/22(土) 10:02:58ID:???
質問者からの再度の書き込みが見当たらない気がするのは私だけ?
質問を投げておしまいにする奴って多いな。
08388042011/01/22(土) 10:16:41ID:???
>>837
なんか丸投げしたまま逃げた感じになってしまってすみません orz
ここにいる人たちのレベルでは良い結果は得られそうにないので>>811さんが
言うとおり他所でお金を払って有能な人に質問することにしました。
0839nobodyさん2011/01/22(土) 10:24:57ID:???
質問じゃないね

丸投げっていうのよ それは

5000円ごときで仕事請け負うか?
会社によっちゃ下手すりゃ1時間ぶんの金額にもならんぞ

自身で勉強する気がないのに「質問」て言葉使うなよ
0840nobodyさん2011/01/22(土) 10:31:33ID:???
それ以前に匿名が金を出すからって言っておきながら不特定多数に解決を依頼する
その姿勢がおかしい。他人を利用したいだけなのが見え見え、しかも自分が満足する
解答(解決ではなく)が得られなければ他人を批判すると来たものだ。
0841nobodyさん2011/01/22(土) 10:37:18ID:???
なりすましにマジレス説教する奴って一体...w
0842んさydobon2011/01/22(土) 10:40:56ID:???
>5000円ごときで仕事請け負うか?
>会社によっちゃ下手すりゃ1時間ぶんの金額にもならんぞ
相応の対価が得られるのならいくらでも払うけどここのカスには¥5kで十分でしょ
実際に誰も解決できてないしw
0843nobodyさん2011/01/22(土) 10:49:54ID:???
ほんと醜いわ
どんな手を打ったってスキルの高い奴には通用しねーよw
0844nobodyさん2011/01/22(土) 10:52:39ID:???
>どんな手を打ったってスキルの高い奴には通用しねーよw
逆に言えばここのスキルの低い奴には通用するということですねわかります










ところで、通用しないって何が?
0845nobodyさん2011/01/22(土) 10:57:24ID:???
>>844
つまりお前が中学生か、中学生並みの知能しかないってことw
0846nobodyさん2011/01/22(土) 11:03:31ID:???
つまりここのカスどもは中学生か、中学生並みの知能しかないってことw

ってことですねわかります
0847nobodyさん2011/01/22(土) 11:13:20ID:???
Ajaxを使える奴が大人
0848nobodyさん2011/01/22(土) 11:15:11ID:???
Jaxaを使える奴が大人
0849nobodyさん2011/01/22(土) 11:16:13ID:???
>つまりここのカスどもは中学生か、中学生並みの知能しかないってことw
yes, so desu!
0850nobodyさん2011/01/22(土) 11:22:51ID:???
??? ?? ?
0851nobodyさん2011/01/22(土) 11:37:27ID:???
Analを使える奴が大人
0852nobodyさん2011/01/22(土) 11:41:57ID:???
>>851
おれ、メチャクチャ大人じゃん!
0853nobodyさん2011/01/22(土) 11:52:03ID:???
↑芸
0854nobodyさん2011/01/22(土) 11:53:16ID:???
大人ならA*a*くらい余裕
0855nobodyさん2011/01/22(土) 13:03:31ID:???
さあ、おうちに帰ろうね。

【PHP】下らねぇ質問はID出さずに書き込みやがれ 1
http://hibari.2ch.net/test/read.cgi/php/1289117484/l50
0856nobodyさん2011/01/22(土) 13:38:05ID:???
>>804
Ajax de ok
0857nobodyさん2011/01/22(土) 14:26:08ID:5oOIF2do
すみません、昨日ID:8ndmGcBVで書き込みしたものです
今掲示板をあれからみたため今から検証していきます
0858nobodyさん2011/01/22(土) 14:37:25ID:5oOIF2do
まず>>834さんの方法を試してみたところ
spend2.phpでは
「Transcation failed:column count doesn't match at row 1」となりました
0859nobodyさん2011/01/22(土) 14:41:28ID:???
もしかしてPHPやMySQLの知識0?
0860nobodyさん2011/01/22(土) 14:52:16ID:5oOIF2do
descriptionの部分で問題があるのかな

>>859
ほとんどないかもしれません
0861nobodyさん2011/01/22(土) 15:23:15ID:???
>>859
だって、こういうコードを書く人だから

function foo(){
?>
<h1>ほげほげ</h1>
<?php
...
}
0862nobodyさん2011/01/22(土) 15:29:49ID:5oOIF2do
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

です
0863nobodyさん2011/01/22(土) 15:50:59ID:???
>>858
>「Transcation failed:column count doesn't match at row 1」となりました

spend2.phpの41行目は
>mysql_query("INSERT INTO inventory VALUES('$uniqueid','{$Row['itemid']}','{$Row['description']}','null','$Character','0','0','1','0','0','{$Row['itemid']}','0')");
でVALUES()には12個の値が入ってる。

実際のinventoryテーブルが12個のカラムで構成されてるか調べてみれば?
0864nobodyさん2011/01/22(土) 16:01:32ID:5oOIF2do
データベース側はこうですので、こちら側に記述追加しないとだめですね
`itemUniqueId` int(11) NOT NULL,`itemId` int(11) NOT NULL,`itemCount` bigint(20) NOT NULL DEFAULT '0',`itemColor` int(11) NOT NULL DEFAULT '0',`itemOwner` int(11) NOT NULL,
`isEquiped` tinyint(1) NOT NULL DEFAULT '0',`isSoulBound` tinyint(1) NOT NULL DEFAULT '0',`slot` int(11) NOT NULL DEFAULT '0',`itemLocation` tinyint(1) DEFAULT '0',`enchant` tinyint(1) DEFAULT '0',
`itemSkin` int(11) NOT NULL DEFAULT '0',`fusionedItem` int(11) NOT NULL DEFAULT '0',`optionalSocket` int(1) NOT NULL DEFAULT '0',`optionalFusionSocket` int(1) NOT NULL DEFAULT '0',
0865nobodyさん2011/01/22(土) 16:07:32ID:5oOIF2do
まずitemcolorがnull許可してないので0にし、14個分インサート分書いたらなんとか
money以外の送信はできました
0866nobodyさん2011/01/22(土) 16:09:13ID:???
オレの数え間違いでなければ13個のカラムがあるみたい
spend2.phpの41行目のVALUES()の最後にもうひとつ0を追加してみては

1: `itemUniqueId` int(11) NOT NULL,`itemId` int(11) NOT NULL,
2: `itemCount` bigint(20) NOT NULL DEFAULT '0',
3: `itemColor` int(11) NOT NULL DEFAULT '0',
4: `itemOwner` int(11) NOT NULL,
5: `isEquiped` tinyint(1) NOT NULL DEFAULT '0',
6: `isSoulBound` tinyint(1) NOT NULL DEFAULT '0',
7: `slot` int(11) NOT NULL DEFAULT '0',
8: `itemLocation` tinyint(1) DEFAULT '0',
9: `enchant` tinyint(1) DEFAULT '0',
10: `itemSkin` int(11) NOT NULL DEFAULT '0',
11: `fusionedItem` int(11) NOT NULL DEFAULT '0',
12: `optionalSocket` int(1) NOT NULL DEFAULT '0',
13: `optionalFusionSocket` int(1) NOT NULL DEFAULT '0',
08678662011/01/22(土) 16:10:01ID:???
ごめん、14個だった
0868nobodyさん2011/01/22(土) 16:15:24ID:???
moneyの方もエラーメッセージを見せてくれれば何かアドバイスできるかも

phpもmysqlも入ってない環境でさっきからエスパってるから
エラー晒してもらわないと何もわからない(汗
0869nobodyさん2011/01/22(土) 16:17:43ID:???
>>868
ほい、money
http://www.youtube.com/watch?v=HWZSz2oo89w
0870nobodyさん2011/01/22(土) 16:23:17ID:5oOIF2do
incorrect integer value ="for column 'attachedkinahcount' at row 1

です 値の入力命令?
0871nobodyさん2011/01/22(土) 16:27:44ID:???
>>870
「不正な整数値('')が、カラム'attachedkinahcount'に挿入されようとしている」
ていうような意味だと思う。

恐らくmoneyテーブルのカラム構成と挿入しようとしてる値が一致してない。
0872nobodyさん2011/01/22(土) 16:31:52ID:???
mysql_query("INSERT INTO inventory VALUES('$uniqueid','{$Row['itemid']}','{$Row['description']}','null','$Character','0','0','1','0','0','{$Row['itemid']}','0')");

↑のようなINSERT文を↓みたいに書き換えて表示してから、実際のカラム構成と
比べてみるといい

$q = "INSERT INTO inventory VALUES('$uniqueid','{$Row['itemid']}','{$Row['description']}','null','$Character','0','0','1','0','0','{$Row['itemid']}','0')";
echo "Query: $q";
mysql_query($q);
0873nobodyさん2011/01/22(土) 17:03:08ID:???
>>870
考えられる原因を

spend1.php
40:$res = mysql_query("SELECT itemid,points FROM voterewards1 WHERE id='{$Reward}'");
42:mysql_query("INSERT INTO mail VALUES('$uniqueid','$Character','Aion Staff','".MAIL_SUBJECT."','".MAIL_BODY."','1','{$Row['itemid']}','{$Row['description']}','1','2010-08-28 02:00:00')");

※42行目で、40行で指定されていないフィールド'description'を参照している
ちなみに'description'はTEXT,'points'はINTで'attachedKinahCountattachedKinahCount'はINT
0874nobodyさん2011/01/22(土) 17:57:29ID:HPNbEIGI
MySQLのカラムロックと、
それに対してPHPがどのようにMySQLとのセッションを
確立するか知りかったんだがorz

MySQLでPHPから
SELECT xxx FROM zzzzzz WHERE id="1" FOR UPDATE
↑
これで次にアップデートするまで、`zzzzzz`.`xxx`に対してロックが行われるとみていいのかな?

あと、ロックかかってる時は他の人からはアクセス不可(エラー)で返るんじゃなくて、
順番待ちとして待機するのかな?

セッションってDB接続ごとに確立されるんだっけ?
A→PHP実行→接続→セッション1が作成
B→PHP実行→接続→セッション2が作成
0875nobodyさん2011/01/22(土) 18:18:37ID:???
カラムロックを確認する前にトランザクションについて勉強しよう!
0876nobodyさん2011/01/22(土) 18:37:36ID:???
>>874
>これで次にアップデートするまで、`zzzzzz`.`xxx`に対してロックが行われるとみていいのかな?
>あと、ロックかかってる時は他の人からはアクセス不可(エラー)で返るんじゃなくて、
>順番待ちとして待機するのかな?
>セッションってDB接続ごとに確立されるんだっけ?

ぜんぶ自分の環境で実行してみればわかるだろ
0877nobodyさん2011/01/22(土) 20:56:32ID:???
>>870 結局、解決したのか?
0878nobodyさん2011/01/22(土) 20:58:39ID:???
>>874 結局、解決したのか?
0879nobodyさん2011/01/22(土) 20:59:10ID:HPNbEIGI
まだです
ちょっと今仕事中で試せていません
0880nobodyさん2011/01/22(土) 22:04:02ID:HPNbEIGI
おk、トランザクションとロック回り試してきました
楽しいですねこれ

LOCK TABLE hoge WRITE;
これだと別のセッションからhogeテーブル読めなく(待ち状態)になりますが、
これってテーブルごとじゃなく、特定の行や特定のカラムのみってできないんですかね

LOCK TABLE hoge WRITE WHERE id='1'; // id=1の行だけロック
LOCK TABLE `hoge`.`test` WRITE WHERE id='1'; // id=1の行のtestカラムだけロック

てかこれどう考えてもMySQLスレ・・・?
0881nobodyさん2011/01/22(土) 22:24:00ID:???
うん
0882nobodyさん2011/01/22(土) 22:24:38ID:HPNbEIGI
ちょっとMySQLスレいてきます
0883nobodyさん2011/01/22(土) 22:31:52ID:???
ちょっとだけだぞ
0884nobodyさん2011/01/22(土) 23:04:12ID:???
Ajax、じゃなかった、了解。
0885nobodyさん2011/01/22(土) 23:04:55ID:???
MySQL 総合 Part19
http://hibari.2ch.net/test/read.cgi/db/1295436346/l50

MySQLでのカラムロックについてはググってください。
いろいろと自分で調べて学んだ方が身につきます。
0886nobodyさん2011/01/23(日) 02:43:25ID:???
>>885
そこの>>9ワロタ
0887nobodyさん2011/01/23(日) 02:44:18ID:???
>>8だった
0888nobodyさん2011/01/23(日) 12:51:40ID:???
>>6だった
0889nobodyさん2011/01/23(日) 13:03:10ID:???
>>890だった
0890nobodyさん2011/01/23(日) 13:26:25ID:???
Ajaxだった
0891nobodyさん2011/01/23(日) 13:26:56ID:???
Jaxaだった
0892nobodyさん2011/01/23(日) 13:27:40ID:???
Analだった
0893nobodyさん2011/01/23(日) 13:31:00ID:???
( * )だった
0894nobodyさん2011/01/23(日) 13:32:16ID:???
(i)だった
0895nobodyさん2011/01/23(日) 13:54:38ID:???
flock中にほかのプロセスから書き込みがあったら、
そのプロセスでは書き込みエラーが出るんですか?
0896nobodyさん2011/01/23(日) 13:59:10ID:???
>>895
Ajaxエラーが出る
0897nobodyさん2011/01/23(日) 14:02:55ID:???
>>896
ありがとうございます。
ファイルでは掲示板作らないほうがいいですね。
0898nobodyさん2011/01/23(日) 14:04:32ID:???
今時の掲示板はAjaxで保存するのがトレンド
0899nobodyさん2011/01/23(日) 16:25:22ID:???
Ajaxで保存するのではなくAjaxで作る
0900nobodyさん2011/01/23(日) 17:45:45ID:???

【PHP】下らねぇ質問はID出さずに書き込みやがれ 1
http://hibari.2ch.net/test/read.cgi/php/1289117484/l50

巣に帰りましょう。
0901nobodyさん2011/01/23(日) 17:48:20ID:???
>>900
スレ違い
0902nobodyさん2011/01/23(日) 18:53:59ID:???
>>901
レス違い
0903nobodyさん2011/01/23(日) 19:19:17ID:???
>>696
>ドリームウェーバーを使ってですとselect*fromでも通りましたが

意味わからん。DreamWeaver にはいつから SQLite 処理機能が搭載されたんだ?
何がどう通ったんだろうな。
どうでもいいけど Weaver はウェーバーじゃなくてウィーバーと発音する

>ほかのソフト使う時は空白を注意して入れてみます。ありがとうです!

ほかのソフトっていうか SQL の基礎を学ぶべき。SQLite 云々関係ない。
SQL質疑応答スレ 10問目
http://hibari.2ch.net/test/read.cgi/db/1274791771/

あと PHP もだな。
【PHP】下らねぇ質問はID出して書き込みやがれ 102
http://hibari.2ch.net/test/read.cgi/php/1292670453/
0904nobodyさん2011/01/23(日) 19:19:42ID:???
あ、すまん誤爆
0905nobodyさん2011/01/23(日) 19:38:56ID:???
>>903
スレ違い
0906nobodyさん2011/01/23(日) 19:39:55ID:???
どうでもいいけど Weaver はウェーバーじゃなくてウェアバーと発音する
0907nobodyさん2011/01/23(日) 23:26:19ID:???
パクッ

weaveは[wi:v]
0908nobodyさん2011/01/23(日) 23:48:53ID:???
夢を織る ドリームウィーバーっちゅうことですな。波じゃないよ
レス数が900を超えています。1000を超えると表示できなくなるよ。