• 締切済み

鬱 XOOPS X2のデータベース操作ではまりました。

鬱になりそうです。 $this->db->query($sql); はSELECT系 $this->db->queryF($sql); はINSERT, UPDATE, DELETE系 と気づくのに1日かかりました。 私はプログラマーに向いていないのでしょうか? XOOPS Cubeでなく X2ではまる場所って他にありますか? 単に私が・・・なだけでしょうか?

みんなの回答

  • appleton
  • ベストアンサー率66% (77/116)
回答No.1

プログラマーには向いていないと思います

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • PEAR DBのupdateについて

    PEAR DBにて複数のデータを一度にUPDATEにて更新しようと思っているのですが、うまくいきません。 foreach($data as $value){   $SQL = "update `table_name` set `id` = '" .addslashes($value). "';"; } $res = $this->db->query($SQL); まず、update分をデータ分foreachにて溜め込み、一気にクエリを投げております。insert文の場合はうまく処理してくれるのですが、updateの場合はエラーが返ってきてしまい、処理してくれません。updateの場合、PEAR DBでは不可能なのでしょうか? お分かりになる方、ご教授ください。よろしくお願いいたします。

    • 締切済み
    • PHP
  • SQL Server上のDBにWin7でアクセス

    SQL Server上のDBに、Win7のクライアントPCからSELECTのみ実行できるツールを探しています。(INSERT、DELETE、UPDATEは実行できないものがいいです。また、DBを直接編集もできては困ります) フリーソフトがベストです。どなたか、ご教授頂けますでしょうか。

  • 単純ですが、意外と穴?なデータベースリソースの鮮度

    よろしくお願い致します。 環境PHP5.2.5 / SQLite3 /*---------------------------------------- * インサート -----------------------------------------*/ $sql_1 = 'INSERTなんたら~(id = 25 を作成)'; $db_pass = 'db_hoge.sqlite'; $db_res = sqlite_open($db_pass); //★タイム(1) $result = sqlite_query($db_res,$sql_1);      :   ~ INSERT処理($sql_1)をしてます ~      : //sqlite_close($db_res) ここではクローズせず      :      : /*---------------------------------------- * デリート -----------------------------------------*/ $sql_2 = 'DELETEなんたら~(id = 25 を削除)'; //省略しちゃうわけです。$db_pass = 'db_hoge.sqlite'; //省略しちゃうわけです。$db_res = sqlite_open($db_pass); //★タイム(2) $result = sqlite_query($db_res,$sql_2);      :   ~ DELETE処理($sql_2)をしてます ~      : /*---------------------------------------- * /処理完了 -----------------------------------------*/ //ここで、ようやく、クローズ sqlite_close($db_res); //============================================== 何が疑問かと言いますと、 ★タイム(1)と、★タイム(2)の時点では、 $db_res の中身の鮮度が違うのでは?と思うわけです。 つまり、 ★タイム(1)の時点では、id=25のデータは作成されていません。 ★タイム(2)の時点では、id=25のデータは作成済みです。 id=25が作成されていない状態のDBリソースを、 ★タイム(2)の所で、使用しています。 言い換えると、 id=25が存在していないDBのリソースを、 タイム(2)の時点で使用し、 そのリソースをもとに、 id=25のデータを消そう(DELETEしよう)としているわけです。 「//省略しちゃうわけです。」 という所で、省略する場合と、しない場合とでは、 結果はやはり異なるのでしょうか? 検査対象がリソースだけに、調べにくいなと思い、 質問させて頂きました。 どなたか、この辺りの正式な作法も含めて、 教えて頂けてませんでしょうか。 上記の「//省略しちゃうんです。」の方法で、 問題ないですよ、 ということであれば、今後も、省略しちゃう方向で、 コーディングしていこうと思います。笑

    • ベストアンサー
    • PHP
  • データベースに情報が登録されない・・・

    お世話になってます。 現在カゴヤのサーバーでデータベースに情報を登録しようと試みているのですが、登録できません。ぜひみなさんのお力を貸して下さい。phpは初心者なのでわかりやすく教えて頂けると嬉しいです。 ----------------------------------------------------------------- カゴヤPEARインストール済み PHP 5.2.6 Apacheバージョン Apache/1.3.41 MySQLバージョン 5.0.33 ----------------------------------------------------------------- <?php //PEARのDBライブラリを読み込む require_once("DB.php"); // データベースとの接続情報を記述 $dsn = "mysql://ユーザ名:パスワード@localhost/データベース名"; $db = DB::connect($dsn); if(PEAR::isError($dsn)){ print "ConnectError"; exit; } $sql = "INSERT INTO テーブル名 VALUES ('111112222233','1111111111','2222222222','3333333333','4444444444','5555555555','6666666666','7777777777','8888888888','9999999999','1212121212','2323232323','3434343434','4545454545')"; $res = $db->query($sql); $num = $db->affectedRows(); print $num . "rows Update"; ?>

    • ベストアンサー
    • PHP
  • phpからsqliteにselect抽出

    phpからsqliteにselect抽出しています。 $sql = "select * from Table where C=?" $st = $db->prepare($sql); $st->bindParam(1, $key, PDO::PARAM_STR); $st->execute(); while ($row = $st->fetch(PDO::FETCH_ASSOC)) { *** *** } でエラーにはなりませんが、データがとれません。 updateやinsertで?(インジェクション)はうまくいくのですが、Selectでなぜ取得できないのでしょうか? bindParamをarrayにしたりprepare をqueryにしたりしましたが、 データが1件しか取れなかったりします。

    • ベストアンサー
    • PHP
  • classについて

    $server = "localhost"; $database = "hoge"; $user = "user"; $pass = "pass"; $con = mysql_connect ($server, $user, $pass); mysql_select_db ($database, $con); $sql = "SELECT * "; $sql.= "FROM `table` "; while ($result = mysql_fetch_array ($rs, MYSQL_ASSOC)) { echo $result[hoge]; } 上記と同じことを下記のようなクラスにして db.php class db { $server = "localhost"; $database = "hoge"; $user = "user"; $pass = "pass"; function __construct() { $this->con = mysql_connect ($this->server, $this->user, $this->pass); mysql_select_db ($this->db, $this->con); } function query($sql){ $rs = mysql_query ($sql); return mysql_fetch_array ($rs, MYSQL_ASSOC); } hoge.php $db = new db(); $sql = "SELECT * "; $sql.= "FROM `table` "; while ($db->query($sql)) { echo $result[hoge]; } のようにしたのですが、うまくいきません。 function query($sql){ $rs = mysql_query ($sql); $result = mysql_fetch_array ($rs, MYSQL_ASSOC); } とすると一行はとれるのですが、複数行とるにはどうしたらいいのでしょうか・・・ どうかよろしくお願いします。

    • 締切済み
    • PHP
  • 異なるデータベース間のリレーション

    phpmyadmin上の異なるデータベース間のテーブルでリレーションをかけたいのですが、うまくいきません。 new_linkフラグをtrueにすることで異なるデータベースを開くところまではできました。 アドバイスいただけないでしょうか。 ※DB1の中にtable1が、DB2の中にtable2がある //失敗する $con1 = mysql_connect("localhost",username,pass); mysql_select_db('DB1',$con1); $con2 = mysql_connect("localhost",username,pass,true); mysql_select_db('DB2',$con2); $sql = "select * from table1,table2 where table1.id = table2.id"; $result = mysql_query($sql) or die(mysql_error()); メッセージ⇒Table 'DB2.table1' doesn't exist //これは成功する $con1 = mysql_connect("localhost",username,pass); mysql_select_db('DB1',$con1); $con2 = mysql_connect("localhost",username,pass,true); mysql_select_db('DB2',$con2); $sql1 = "select * from table1"; $result1 = mysql_query($sql,$con1) or die(mysql_error()); $sql2 = "select * from table2"; $result2 = mysql_query($sql2,$con2) or die(mysql_error());

    • ベストアンサー
    • MySQL
  • MySQL 文字化けについて(PHP)

    いつもお世話になっております。 PHPを使用してMySQLからデータを出し入れする際に文字化けが発生し原因がわからず、大変困っております。 MySQL 4.1.18(クライアント 4.1.21) MySQL文字セット UTF-8 Unicode (utf8) 様々なHPを検索して、下記のような一文を入れれば大丈夫と思ったのですが、それでも文字化けは改善されませんでした。 mysql_query("SET NAMES ujis"); 上記文はmysql_connectの直後に記述しております。 INSERT文、SELECT文どちらに不備があるのかわかりません。 ご教授お願い致します。 記述プログラム:(INSERT文) /********************************* * MySQL接続 ********************************/ // DB Connect $db = db_connect(); // DB Select select_db($db); // Set Names mysql_query("SET NAMES ujis"); /********************************* * INSERT文 ********************************/ $sql = "insert into T_YOYAKU values ('1','A','1','あいうえお')"; mysql_query($sql) 省略・・・ 記述プログラム:(SELECT文) /********************************* * MySQL接続 ********************************/ // DB Connect $db = db_connect(); // DB Select select_db($db); // Set Names mysql_query("SET NAMES ujis"); /********************************* * INSERT文 ********************************/ $sql = "select * from T_YOYAKU"; if ( $rs = mysql_query($sql) ) {

    • ベストアンサー
    • MySQL
  • CakePHPとMySqlを使用しています。INSERTしたあと、id

    CakePHPとMySqlを使用しています。INSERTしたあと、idを取得する方法について教えて頂きたいです。 データをINSERTとSELECTをする関数を作成し、 メインの関数でINSERTとSELECTをする関数を呼び出すと、idがNULLとなってしまいます。 しかし、1つの関数でINSERTとSELECTを行うとidを取得する事ができました。 この方法は問題ないのでしょうか? この方法だとなぜidが取得できるんでしょうか? また、これ以外の方法でidを取得できる方法があればお教え頂きたいです。 宜しくお願いします。 【hogeテーブル】 id(PRIMARY。オートインクリメントさせています) name ●idがNULLになる方法 function main() { $this->insertHoge(); $id = $this->getHoge(); ←結果がNULLになる } function insertHoge() { $sql = "INSERT INTO hoge ('name') VALUES('ABC')"; $result = $this->query($sql); return $result; } function getHoge() { $sql = "SELECT id FROM hoge WHERE name='ABC'"; $result = $this->query($sql); return $result; } ●idが取得できる方法 function main() { $id = $this->insertHoge(); ←idがかえってくる } function insertHoge() { $sql = "INSERT INTO hoge ('name') VALUES('ABC')"; $result = $this->query($_sql); $sql = "SELECT id FROM hoge WHERE name='ABC'"; $result = $this->query($_sql); return $result; }

    • 締切済み
    • PHP
  • テーブルの権限 またはユーザの権限

    お世話になっております。 サーバーをいじること自体がはじめてで迷走しています; どうかご助言お願いします >< SQL Serverにおいて ユーザ「9999」がいるとします。 またDB「AA」「BB」「CC」「DD」があり、各DBに「9999」はログインできるようになっています。 各DB内にはそれぞれ複数のテーブルが存在します。 そして各テーブルでは「9999」に 「SELECT、INSERT、UPDATE、DELETE」の権限を与えてあります  ←今ココです そこで質問なのですが、 (1)ユーザ「9999」に与えてあるSELECT等の権限を確認するSQL文は存在しますでしょうか。   →「9999」がどのDBのどのテーブルにどの権限を持っているのか、など。 (2)もしくはDBごとに、どのユーザがどのテーブルに対してどの権限を持っているかを   確認するSQL文はありますでしょうか。   →テーブルごとでも結構です。 「権限を確認するSQLはあるよ」と 先輩に言われ、必死に探しておりますがOracleのものしか見つかりません。。。 とりあえず「9999」がそのテーブルに対して権限を持っているということを 証明したいのです。  ※テーブルのプロパティで権限付与を行ったため、    同じ方法で確認するのは意味がないと言われてしまいました どうかよろしくおねがいします。