PHP質問・雑談スレ 2【初心者お断り(ROM歓迎)】©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん 転載ダメ©2ch.net
2016/10/17(月) 21:44:12.59ID:???初心者お断り(ROM歓迎)と書いてますが、初心者用のスレが用意されているからで、
難しい質問や話題をしなければいけないわけではありません。
PHPマニュアルの読み方を概ね理解していて、関数リファレンスが正しく読める方用のスレです。
PHP未導入の方や、手取り足取りが必要な初心者の方はム板のくだスレへどうぞ。
http://echo.2ch.net/tech/ (【PHP】で板内を検索)
前スレ
http://tamae.2ch.net/test/read.cgi/php/1461283091/
その他リンク
・PHPマニュアル
https://secure.php.net/manual/ja/index.php
・コードテスト・貼り付け用
http://ideone.com/
・プログラミングのお題スレ Part8 (求PHPer参戦)
http://echo.2ch.net/test/read.cgi/tech/1444216746/
このスレで扱う話題
・PHPのコード,設定や設定値に関する質問
・常識的範囲内でのコードレビュー依頼・改良相談
・PECL,PEARに関する質問
・PHP新機能やPHP関連トレンドの話題
(FWや非公式ライブラリの話題や特徴比較は良いが使い方から先の話題は専スレへ)
・PHPのバグ発見報告・公式に報告する前の検証依頼
このスレで扱わない話題
・直接関係ない○○特有の質問(専スレへ)
(HH,エディタ,IDE,サーバ,OS,DB,SQL,FW,テンプレート,非公式ライブラリ・アプリケーション等)
・PHPの改造
0232nobodyさん
2016/10/19(水) 23:44:44.61ID:???SQLを書くのは人間だよ。「不定の値をバインドしたい」だけが達成できれば要件満たすコードがすげー書きやすくなるって話さね。
PDOがarrayをバインドできるようになればこういったブレイクスルーが起こせるんや。
0233nobodyさん
2016/10/19(水) 23:46:44.22ID:???もちろんそれは動かない、ので、それをどうにかしましょうというのが >>153 で書いた「あさってのこと」で
配列型に対応するのは「前にしないといけないこと」。
で、それ(配列型に対応)がされた前提であるならそもそも IN 使う必要なんてなくなるよという話ですよ。
0234nobodyさん
2016/10/19(水) 23:46:55.79ID:???それならPDOじゃなくてilluminate/databaseのQueryBuilderでも使えば宜しい
0235nobodyさん
2016/10/19(水) 23:47:56.61ID:???arrayがバインドできてもin(:array)だとArray型を比較しようとする仕様だった場合の話をしている。
その場合は今ある関数でなんとかするならこういう小細工になるし、
配列をxargsみたいに解釈してくれる関数が出てくるのならそれを使えばいい。
いづれにしても「できる」ってことやな。
0239nobodyさん
2016/10/19(水) 23:56:24.40ID:???「PDOはSQLを書き換えない」んだろ?
ORMやらクエリビルダやらのPHPと一体となっているSQLではなく、
クエリ文とパラメータだけで編成された、割とピュアなデータ入出力設計ができるようになる訳だ。
結構メリットっちゃメリットだよ。システムがPHPに引きずられなくなる訳だし。
0240nobodyさん
2016/10/20(木) 00:00:08.32ID:???一旦まとめさせてほしいんだけどさ、配列型がbindできるようになったらさ、スッキリするよね。
で、
>IN (?) に [1, 2, 3] をバインドしたら IN (1, 2, 3) になる(なってほしい)
なんて願望はもうなくなるよね。
0241nobodyさん
2016/10/20(木) 00:02:27.96ID:???0242nobodyさん
2016/10/20(木) 00:03:04.90ID:???> SELECT * FROM T WHERE GROUP_CONCAT(:array,'-') REGEX ID;
(とてもスマートではないけれど)こう書けばいいわけだから、 IN (1, 2, 3) になってほしいって願望はもうないよね。
0243nobodyさん
2016/10/20(木) 00:05:45.33ID:???それもよう分からん。配列型が使えるとIN()文が他のものでだいたいできるような話にはならんと思うのやが。
少なからず配列型を使えるようになったらIN(配列)の出番はかなり増すと思うんだが。
>>241
SQL99ではARRAYは型なんだってよ!
0244nobodyさん
2016/10/20(木) 00:08:41.04ID:???ARRAYは型らしいから、通常のロジックで言えばIN(:array)は配列型と配列型比較することになる。
それを回避するためのコードがGROUP_CONCAT()で、SQLパズル的なコードだから「なるべく使いたくない」。
INで動くならINで書くよ。IN(XARGS(:array))でいいならそうするよ。
0246nobodyさん
2016/10/20(木) 00:11:02.88ID:???DB側でSQLパズルしなければならない(例のXARGSのようなものは存在しない)から>>240,242何だと思うけど
0247nobodyさん
2016/10/20(木) 00:15:43.84ID:???もしSQLパズルでしか動かないとしても、クエリビルダを使用しないという選択肢を取れることは結構メリットではある。
基幹系とかデータの寿命が半世紀以上になるような部門だと割とマジで福音になるんじゃないだろうか。
(まあ、そういうところこそもっとスマートではない泥臭いやり方してるもんだけど)
0248nobodyさん
2016/10/20(木) 00:17:54.15ID:???つまり
>>240
> >IN (?) に [1, 2, 3] をバインドしたら IN (1, 2, 3) になる(なってほしい)
> なんて願望はもうなくなるよね。
ということでよろしいか?
arrayがバインド出来てよいことには同意しておくから。
0250nobodyさん
2016/10/20(木) 00:31:18.04ID:???0252nobodyさん
2016/10/20(木) 00:45:45.25ID:???これだと多分文字列のふりしてJsonデータ入れれば配列を入れたことと同じになるくさいから、
もうほとんど目的達成されてるのかも。PDOに頼らずとも。
0254nobodyさん
2016/10/20(木) 01:04:00.18ID:???0256nobodyさん
2016/10/20(木) 01:12:49.83ID:???SET型は64個までしか値持てへんねん。つうことは必然と種類フラグ的な用途でしか使えへんねん。
特定のユーザIDの配列とか渡せないから実質使えへんで。
まあでもJSON実装したんならArrayもそのうち実装されるやろ。
0257nobodyさん
2016/10/20(木) 03:08:40.95ID:???Arrayも、代わりになるデータ型も無いことを知っている上で >>251 を書いたの?
それならPDOよりも先にMySQLに…って>>254が正解だったか。
0258nobodyさん
2016/10/20(木) 07:08:33.92ID:???pdo+mysqlのデフォルト動作ってエミュモードなんねや。
そもそもパフォーマンスを必要とされるmysqlでいちいち複数ステートメントになるネイティヴプリペアードステートメント打つ必要は無いねん。
だから、別にmysqlにarrayが実装されてるかどうかはあんま関係ないねん。
PDOで内部的に書き換えてくれりゃええんやから。
0260nobodyさん
2016/10/20(木) 14:17:15.32ID:???なんでエミュレート切った方がいいのかもわかってないし、
プリペアする理由はSQLインジェクション対策くらいにしか思ってないし、
もう、この関西弁、どうしようもねーよ。
0261nobodyさん
2016/10/20(木) 15:52:42.51ID:???普通じゃない。サルカニの人と同じく、他人と仕事をしないで自分の世界に閉じこもっていてほしい。
0262nobodyさん
2016/10/20(木) 16:36:20.83ID:???ワイの知る限りではmySQLでエミュレーションモードを切る利点もデメリットも無い。
なんか具体的に問題となることあんのか?
「PDOはクエリを改変しない」原理主義的なアレか?
0263nobodyさん
2016/10/20(木) 17:14:39.56ID:???この辺じゃないの?
http://unskilled.site/%E3%81%AA%E3%82%93%E3%81%A7php%E3%81%AFmysql%E3%81%8B%E3%82%89%E3%81%AE%E3%83%AA%E3%82%B6%E3%83%AB%E3%83%88%E3%81%8Cint%E5%9E%8B%E3%81%AE%E3%81%AF%E3%81%9A%E3%81%AA%E3%81%AE%E3%81%ABstring%E5%9E%8B/
0264nobodyさん
2016/10/21(金) 14:50:33.94ID:???0265nobodyさん
2016/10/21(金) 16:56:20.63ID:???>ワイの知る限りではmySQLでエミュレーションモードを切る利点もデメリットも無い。
複文。
くたばれ、クソ関西弁。
0266nobodyさん
2016/10/21(金) 18:13:21.18ID:???数値項目も文字列が戻る前提でコーディングし、なおかつPHPでもJavaScriptでも律儀に"==="を使っていて、ある日数値項目は数値で戻るようになると死ぬ
0267nobodyさん
2016/10/21(金) 18:35:28.79ID:???そんなんで死なないようにO/Rマッパーを作ってラップし、
エンティティの定義で型強制をするわけだが、
>>141の言ってるEloquentもDoctrineって、その辺やってくれるのかね?
俺は昔Doctrineの導入のクソめんどくささに辟易して自分で[クエリビルダ:O/Rマッパー]を作るに至った。
composerとか、まだ普及してなかった時代の話だ。
今はもっとマシかもしれん。
0268nobodyさん
2016/10/21(金) 18:37:53.01ID:???よく考えてみるべきだよ。
0269nobodyさん
2016/10/21(金) 22:03:34.73ID:???pearみたいなもんじゃないの?
0270nobodyさん
2016/10/21(金) 23:23:47.03ID:???とりあえず使ってみれば分かるけど, 依存関係の管理をしてくれる
そしてオートローダ―も自動生成してくれるからプログラマの手間が大幅に減る
Rubyのgem/bundler, Pythonのpip, Node.jsのnpmみたいな。最早必須
0271nobodyさん
2016/10/22(土) 01:21:32.24ID:???ボタンを押したとき、非同期でdata.phpからデータを取得しています。
ページの初期化時もdata.phpからデータを取得するにはどうすればよいでしょうか。
0272nobodyさん
2016/10/22(土) 05:48:24.63ID:???ていうかそれPHPの質問じゃないで
0274272
2016/10/22(土) 06:29:08.38ID:???あ・・初期化ってonload時のことかと思ってそう答えたけど
phpだけですませたいってことか?
home.phpで
・data.phpをrequireして関数を呼ぶ
・ボタン押した時と同じ内容のリクエストをdata.phpに送って結果を取得する
(curlあるいはstream_context作成してfile_get_contentsなど)
とかそのあたり?中身わからんのでなんとも
0277nobodyさん
2016/10/24(月) 14:38:12.28ID:???方法その1: ページロード時にボタンクリックで実行される関数を呼び出す
方法その2: 初期データをページに埋め込んで戻す
var initial_data = <?php echo json_encode($data); ?>;
方法その3:
方法その2に加えて、それを使ったレンダリングをサーバサイドで実行し戻す。
0278nobodyさん
2016/10/25(火) 14:31:47.75ID:9sW4yNavxamppでローカルサーバーを立て、テストしています
テストのローカルコンピュータと、本番のネットワークサーバーで処理を分岐させたいのですが、どういう風に分岐させるのが良いでしょうか?
具体的には、sakuraサーバーでデータベースのアドレスが"localhost"で取得できないために分岐させたいとおもっています。
0279nobodyさん
2016/10/25(火) 15:00:29.28ID:???> 具体的には、sakuraサーバーでデータベースのアドレスが"localhost"で取得できないため
意味がわかりません。
localhostで接続する設定がされてないだけでは?
0280nobodyさん
2016/10/25(火) 15:04:09.42ID:???言ってることがいまいちよくわからんが
>"localhost"で取得できないために分岐させたいとおもっています
てことは別にsakuraとlocalhost(xampp入ってるPC)のDBは同期する必要がないってことでしょ?
なら別に分岐させる必要なんてないのでは
0281nobodyさん
2016/10/25(火) 15:25:08.75ID:9sW4yNavわかりづらくてすいません。
もう少し勉強し直してきます
0282nobodyさん
2016/10/25(火) 16:01:15.50ID:???普通なら、接続先をlocalhostにしてローカルな環境で開発したものを、そのまま本番環境に持って行けばいいだけ。
下手にhostnameで繋ごうとすると、pg_hba.confで接続設定を追加しないといけない。
それとも、ローカルな環境から本番環境のデータベースに接続したいって話?
0283nobodyさん
2016/10/25(火) 16:05:42.39ID:???ってことだと思う
それを防ぐために分岐させたいと言うことだろう
やったことないけどそんな方法あるんかね
0284nobodyさん
2016/10/25(火) 16:57:02.97ID:???$dns = $local_mode ? local : sakura;
$pdo = new PDO($dns);
0285nobodyさん
2016/10/25(火) 17:07:49.84ID:???そのコード、ローカルで実行してもsakuraで実行してもlocal_mode = trueになるよね、、、
レベルで詰まってるのだろうか
0286nobodyさん
2016/10/25(火) 17:28:09.31ID:lqPEVp/h標準では
get_template_part( 'template-parts/content', 'search' );
のコードで検索結果を表示している様なのですが、
この関数で表示されるコードをa href="のhtmlタグのまま表示したいと思っています。
htmlspecialchars()やpreを使っても出来ないので、どうしたら解決出来ますか?
0287nobodyさん
2016/10/25(火) 17:32:14.92ID:???284だけど、俺は質問者じゃないのだが
例えばそういうふうにするって示しただけで
当然本番じゃfalseにしてから使うのを想定してる
0289nobodyさん
2016/10/25(火) 17:46:53.99ID:???> 284だけど、俺は質問者じゃないのだが
いや、わかってるし
> 当然本番じゃfalseにしてから使うのを想定してる
編集するならそんなめんどいことしなくて
$pdo = new PDO(sakura);
ってやればいいし
一つのコードで何かを振り分けたいんじゃないの?
0290nobodyさん
2016/10/25(火) 18:05:16.41ID:???・環境変数DB_HOSTを設定しそれを使う(なければlocalhostとか)
・アプリのエントリポイントを分ける(index.phpとindex_dev.phpとか)
0291nobodyさん
2016/10/25(火) 19:48:51.12ID:???開発環境と運用環境で処理を分けるってのはDBに限った話じゃないだろうし。
0292nobodyさん
2016/10/25(火) 21:52:30.71ID:???>www.php.net の所有者による Web サイトの設定が不適切です。
>あなたの情報が盗まれることを防ぐため、この Web サイトへの接続は確立されません。
>www.php.net は不正なセキュリティ証明書を使用しています。
> 自己署名をしているためこの証明書は信頼されません。
> エラーコード: SEC_ERROR_UNKNOWN_ISSUER
だれかwgetで取ってくるから最新のソースのアドレス頼む
0293nobodyさん
2016/10/25(火) 22:03:53.46ID:???https://help.sakura.ad.jp/hc/ja/articles/206053952--%E3%83%AC%E3%83%B3%E3%82%BF%E3%83%AB%E3%82%B5%E3%83%BC%E3%83%90-%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%81%AE%E4%BD%9C%E6%88%90-%E8%BF%BD%E5%8A%A0-%E5%89%8A%E9%99%A4
(禁止ワードで張れないからリンク先参照)
のようだからlocalhost指定が出来ないってだけの話だろ
本番に移行するときにDBの接続情報変えればいいってだけの話
0294nobodyさん
2016/10/26(水) 00:17:59.48ID:???…
https://secure.php.net/downloads.php
0296nobodyさん
2016/10/26(水) 10:43:18.97ID:???> 本番に移行するときにDBの接続情報変えればいいってだけの話
それはどうやって実現できますかって話なんだけどね
0297nobodyさん
2016/10/26(水) 13:22:24.63ID:???まず2つの接続情報を書いとかないと実現はできない。
あとは環境変数見て振り分ければ完成。
サーバを移行させたり 使う環境が変わることはあるわけだし、
普通は接続情報は都度直接編集するもんでしょう。
同じlocalhostで通るにしても ユーザ名やパスワードまで普通合わせたりしないし。
そのへん考えなくていいSQLite使えばいいと思うよ。
0299nobodyさん
2016/10/26(水) 14:00:48.25ID:???ワンクリックデプロイといってもやってることは同じでしょ。
0300nobodyさん
2016/10/26(水) 14:28:42.50ID:???> 設定に関する情報がないといけないわけで、
> ワンクリックデプロイといってもやってることは同じでしょ。
書き方が悪かった。
しないのは、「サーバを移行させたり 使う環境が変わること」があっても、「接続情報は都度直接編集」すること。
サーバ毎にユーザ名やパスワードを変更することもしない。
どこでも、localhost接続で同じユーザ名、同じパスワード。
「サーバを移行させたり 使う環境が変わること」やデプロイ先が増えたりしたら、デプロイスクリプトのデプロイ先を変更するだけ。
0301nobodyさん
2016/10/26(水) 14:35:17.91ID:???データベースのマイグレーションツールは使ってる?
そのツールのデータベース接続情報がファイルに記述されてるとして、それはどうやって管理してる?
ユーザ名・パスワード直書き?
0302nobodyさん
2016/10/26(水) 14:48:36.51ID:???これがいけなかったんだな
0303nobodyさん
2016/10/29(土) 17:19:30.19ID:???その他WEBサービス系で必要であろうサーバは整えられるんだけど、
開発できる言語がphpとJavascript、SQLしか使えないんだけど、
その程度の者でもWEB系の開発企業で即戦力になったりしますか?
ちなみに実務は7年で、入社してからずっと時間給で働いてます。
そろそろ先々が心配なので転職or時間単価向上を考えたいと検討してます。
雑談スレと書いてあったので、こういう話は書いても大丈夫でしょうか。
スレ違いだったらROMに戻ります。。。
0304nobodyさん
2016/10/29(土) 17:37:39.55ID:???プログラマ板があるからそっちの方が良いかも?
サーバー管理者は大企業で重宝されるイメージ。一度大きい企業回ってみて、自分の価値を確認するというのはどうだろう
NTTデータとかyahooなどの超大手に、当たって砕けるというより自分の価値を確認するつもりで受けてみてはどうかな
0305nobodyさん
2016/10/29(土) 20:44:28.72ID:???PHP+JavaScript+SQLは、案件が最も多いと同時に、金額が最も安い組み合わせです。
次の仕事を見つけることはできても、それで収入アップが実現できるかは厳しいんじゃないでしょうか。
0306303
2016/10/29(土) 21:55:10.97ID:???多々ご指導くださり、大変勉強になりました、ありがとうございます。
単価にすると時間当たり900円にも届いてない状態で、
流石にフリータと変わらないと最近焦りを隠せなくなっておりました。
せめて実務経験があればと思っていたのですが、
間もなくいわゆる”35歳”を迎えるので実績が仮にあっても
切られてしまうのではないかと気が気ではなくなりつい投稿してしまいました。
スレ汚し失礼しました、ご教示いただきました内容を念頭に置いて新しい言語にチャレンジするなり、
体当たりするなりしてみたいと思います。
ありがとうございました。
0307nobodyさん
2016/10/29(土) 23:18:37.38ID:???がんばってください。
0309nobodyさん
2016/10/30(日) 09:51:33.15ID:???0310nobodyさん
2016/11/01(火) 16:27:31.79ID:???例えば「18:00:00」を「18:00」に変換するとき、どうすればよいでしょう?
ただしPHP側の操作のみで、文字の切り取り以外でお願いします
0311nobodyさん
2016/11/01(火) 17:03:56.16ID:???http://php.net/manual/ja/datetime.format.php
0312nobodyさん
2016/11/01(火) 17:06:19.32ID:???0313nobodyさん
2016/11/01(火) 17:39:20.52ID:???0314nobodyさん
2016/11/01(火) 17:43:30.85ID:???「入力フォームを多用+保護されているけどReaderで保存可なPDF」をテンプレートとして、
ストレスなく扱えるPHPライブラリってあるかしら?
FPDIだと、入力フォームは消えてしまうし、PDFが保護されていたりすると、エラーが出て
読み込めないようで…。
有償、無償は問いません。
どなたかご教示いただけないでしょうか。
0316nobodyさん
2016/11/01(火) 18:27:16.91ID:???ごめんなさい、要は、
> FPDIだと、入力フォームは消えてしまうし、PDFが保護されていたりすると、エラーが出て
> 読み込めないようで…。
これがストレス。
で、書き方を間違えてた。保護は関係ないみたい。圧縮されてるとエラーでした。
0319nobodyさん
2016/11/01(火) 18:41:47.03ID:???0320nobodyさん
2016/11/01(火) 18:42:49.19ID:???0321nobodyさん
2016/11/01(火) 18:46:40.76ID:???ライセンスキー入れなくてもウォーターマークが入るだけで、普通に使えたような記憶があるよ。
0322nobodyさん
2016/11/01(火) 18:47:57.44ID:???FPDI以外試したのか?
ググったのか?(ぐぐりゃすぐに候補はでてくる)
直接PDFを操作する系のライブラリ以外は候補に出来るのか?
調べたか?
使ってみたか?
まず、これこれは駄目でしたって何で言えないんだよ。
0324nobodyさん
2016/11/01(火) 18:50:23.33ID:???これは試したか?
0325nobodyさん
2016/11/01(火) 18:51:30.53ID:hf4qXWjd現在はある会社のHP担当としてアルバイトで働いています。
主にwordpressのループ処理+アクセス解析ばかりで、あまりPHPを覚えたとはいえない状態です。
何か覚えたほうがいいものがあれば、片っ端から教えてください。
現在は以下のことを学習済みです
・型の違い
・if・for・switch構文
・文字列の操作
・日付の操作
・class作成。継承とかはほとんどしたことありません。
・gitは自分でリポジトリを作ってpush、pull、ブランチを作成したり、バージョンを戻したりと基本的な事ができるようになったレベルです
・SQLはコピーペーストでSELECTやINSERTを使えるレベルです
何から覚えるとよいでしょうか?
それともwordpressを極めたほうがいいのでしょうか?
0328nobodyさん
2016/11/01(火) 19:09:47.89ID:???目指すところにもよると思うけど、見てくれの成果を急ぐならフレームワーク使ってなんか作ってみれば?
くれぐれもインクルードガードを理解できないような大人にならないように気を付けて。
0330sage
2016/11/01(火) 19:45:20.09ID:p6F2bD12https://www.youtube.com/watch?v=NJYs5GTmdcg
0332nobodyさん
2016/11/01(火) 20:34:29.15ID:???WEB屋でいつづけるならPHPなんか覚えたって役に立たない。
Wordpressという名の言語を覚えたほうがいい。
プログラマーになりたいならWordpressみたなゴミクズにはできるだけ関わらない方がいい。
>何から覚えるとよいでしょうか?
なにはなくともforeach。
■ このスレッドは過去ログ倉庫に格納されています