dポイントプレゼントキャンペーン実施中!

表題のとおりなのですが…

$result = mysql_query( "SELECT * FROM FOO" );
では、動作しています。

このセレクト文を、selectFOO.sql として外部ファイル化し、
(ファイルの中身は、「SELECT * FROM FOO」)

$result = mysql_query( selectFOO.sql );
とすると、

1064 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'selectFOO.sql' at line 1
が返ってきます。

SQL文が正しくないよ。マニュアル見てね。
と言われてるのは分かるのですが、
マニュアルのどこを見れば良いのかさえ分かりません。

助けてください。
よろしくお願いします。

A 回答 (4件)

#2です。

補足です

よくよく考えてみると運用上PHPでSQL操作をする場合は
ほとんど動的にSQLクエリーを発行します。
外部ファイルのSQL文が活躍する機会はほとんどないのでは?

ということで外部ファイル化は現実的でないので
お辞めになったほうがよいのでは?
    • good
    • 0
この回答へのお礼

度々返信ありがとうございます。

> 現実的ではないで
作っててそんな感じがしてきました。

調べても見つからないので検索語が悪いのかと思ったのですが、
「現実的ではない」が理由なのかな。と思いました。

お礼日時:2006/08/30 00:18

>例えば、どんなのがあるのでしょうか


外部ファイル化すると、webサーバーの設定次第ではブラウザで直接 SQLファイルを見れたりDL出来たりします
知識のある人ならばそのSQL文を見ただけでどう攻撃すればよいか分かってしまいます
俗に言うSQLインジェクション攻撃されます。




外部ファイル化するならばあくまでもphpとして外部化して includeするなりしたほうがよっぽど賢い選択です

例えば

-----------selectFoo.php
$sql="SELECT * FROM FOO";



-----------

------------index.php
include "selectFoo.php"

(中略)

$result = mysql_query($sql);
---------

っという感じです
    • good
    • 0
この回答へのお礼

返信ありがとうございます。

拡張子を「.php」にして、「include」。
これをすると、SQL文に変数入れたり出来ますね。多分…

file関数よりもこっちか。と思いました。

.htaccess に「.sql」書いて見れなくすれば良いよね。と思ってたのですが、
include する。を選びたくなりました。

お礼日時:2006/08/26 00:59

手っ取り早いのはfile関数


http://www.php.net/manual/ja/function.file.php

#1さんも指摘のとおりファイルI/Oは通常はfopen
でしょうね

http://www.php.net/manual/ja/function.fopen.php

PHPマニュアルは最低限読むようにしましょう
(サンプルコードも豊富ですしね)
    • good
    • 0
この回答へのお礼

返信ありがとうございます。

>PHPマニュアルは最低限読むようにしましょう
そのとおり…
http://www.php.net/manual/ja/
みながら書いてるのですが(見ないと書けないので…)
PHP出来ないのに、JavaScriptなんとなく(本見ながら)出来るから大丈夫だろう。で書いてます。
そんな感じで、サンプルを書き換えてみてます。

file関数で、fopen()より先に見つけたので

$result = mysql_query( file_get_contents( 'selectFOO.sql' ) );
としたら動いたので、fopen()~…もやってみます。

お礼日時:2006/08/26 00:50

がると申します。


えと………どんなに最低限でも
・ファイルopenして
・ファイルの中身readして
その情報を引数で渡してあげないと、と思うのですが、どんなもんでしょうか?

ちなみに「SQL文を外だし」は、よっぽど気をつけないと「シャレにならないセキュリティホールが山のように」発生しますのでご注意ください。
    • good
    • 0
この回答へのお礼

痛…。初歩的ですね…。
返信ありがとうございます。

SQLとは別に、GDをやってました。
ファイルパスを直接渡してたりしてたので、その感覚のままでした…(言訳;)

>ちなみに
例えば、どんなのがあるのでしょうか。
絞れる検索語だけでも、お教え願えないでしょうか。

キキマクリですが… よろしくお願いします。

お礼日時:2006/08/25 20:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A