- ベストアンサー
sqlite3でidは必要か?
- sqlite3を使用している際に、rowid以外にidを必要とするか悩んでいます。rowidは自動的に付加されますが、抽出する際には使用できません。教えてください。
- idやnoといったプライマリーキーは必要でしょうか?nameが一意なので、条件設定できるとはいえ、スマートではありません。
- sqlite3ではAUTO INCREMENTができないため、値を一つずつ入れていかなければなりませんか?mysqlのように自動的に番号を付加してくれないため、疑問です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (1)
- chukenkenkou
- ベストアンサー率43% (833/1926)
関連するQ&A
- sqlite3 group byがわかりません!!
テーブル番号を入力すると、各テーブルごとの商品 数量 小計が表示されるようにしたいのですが、各テーブルの合計が表示できません。ご教授お願い致します! <?php $ban = $_POST['ban']; $kazu = $_POST['kazu']; $tno = $_POST['no']; //テーブル番号 $pdo = new PDO('sqlite:db/syouhin.db'); $st = $pdo->query("SELECT * FROM list WHERE tno='" . $_POST["no"] . "' "); while ($row = $st->fetch()) { $tno = htmlspecialchars($row['no']); $id = htmlspecialchars($row['id']); $name = htmlspecialchars($row['name']); $kin = htmlspecialchars($row['kin']); $kazu = htmlspecialchars($row['kazu']); $kei = htmlspecialchars($row['kei']); echo "<td>$id</td><td>$name</td><td>$kin</td><td>$kazu</td><td>$kei</td><tr>"; } $st = $pdo->query('SELECT sum(kei) as kei FROM list group by tno');//←tno( テーブル番号カラム名 if ($row = $st->fetch()) { $tno = htmlspecialchars($row['tno']); $gokei = number_format($row['kei']); echo '¥'."$gokei"; }
- ベストアンサー
- PHP
- SQLite(3.2.2)でauto_increment
今、SQLiteを利用してつまづいています。 バージョンは3.2.2です。(Linux) MySQL、PostgreSQLの知識はあります。 プライマリーキー(id)にシリアルを作成しようと思い、http://cl.pocari.org/2006-02-12-1.html を参考にしながらテーブルを作りました。 CREATE TABLE bbs ( id INTEGER UNSIGNED NOT NULL PRIMARY KEY, name VARCHAR(255) NOT NULL, message TEXT NOT NULL, last_update TIMESTAMP NOT NULL ); このbbsテーブルに対し、 INSERT INTO bbs (name,message,last_update) VALUES ('name','message','2008-04-03 12:11:00'); というクエリを発行すると 「SQL error: bbs.id may not be NULL」 とういエラーが返ってきます。 確かに、bbsテーブルのidカラムは「NOT NULL」制約があるのでエラーが正しいとは思うのですが、参考URLのauto_incrementの作成方法には、auto_incrementにしたいカラムをPRIMARY KEYでやればできる、のような事が書いてあったので、よく分かりません。 バージョンの問題なのか、クエリに誤りがあるのか分かる方おられましたら解答お願いします。 また、auto_incrementなカラムの作成方法も一緒に教えていただけたら幸いです。 宜しくお願いします。
- ベストアンサー
- その他(データベース)
- sqlite3 検索、一行づつ増やして表示
sqlite3接続で商品番号と数量を入力して検索表示させ小計を実行するphpで一行表示はOKなのですが、続けて検索させ一行ごと増やしていきたいのですがうまくできません!ご教授お願い致します。 <?php $kazu = $_POST['kazu']; $pdo = new PDO('sqlite:db/syouhin.db'); $st = $pdo->query("SELECT * FROM oder WHERE id='" . $_POST["ban"] . "' "); while ($row = $st->fetch()) { $id = htmlspecialchars($row['id']); $name = htmlspecialchars($row['name']); $kin = htmlspecialchars($row['kin']); $kei = number_format("$kin"*"$kazu"); echo "<tr><td>$id</td><td>$name</td><td>$kazu</td><td>$kin</td><td>$kei</td><tr>"; } sqlite_close; ?>
- 締切済み
- PHP
- sqliteへのデータ追加
sql文で質問です。接続は1-29の表示を確認済み。 掲示板を作る練習をしているのですが、とりあえずpostなどのユーザーから受け取り値をdbに保存・表示する前に、自分で保存(カラムは左から順にid,name,sexになっていてidの1~29は埋まっている状態です。)・表示してみようと思いtest.dbのhumanテーブルに「データの追加」と表記している部分をテーブルに書き込み表示したいのですが、エラーは表示されないもののid30番にデータの追加ができておらず困っています。 データを追加する方法を教えてください。 <?php // 変数の初期化 $db = null; $sql = null; $res = null; $row = null; $db = new SQLite3("test.db"); // データの追加 $sql = 'INSERT INTO human( id, name, sex, ) VALUES ( 30, "吉川", "男", )'; // データの取得 $sql = 'SELECT * FROM human WHERE id BETWEEN 1 AND 50;'; $res = $db->query($sql); while( $row = $res->fetchArray() ) { echo '<ul>'.'<li>'. $row[0] . $row[1] .$row[2].'<li>'.'<ul>';} ?>
- ベストアンサー
- その他(データベース)
- sqlite3の動作が?xamppでは問題なく
sqlite3の動作が?xamppでは問題なく作動しますが、ロリポップサーバーではFatal errorがでます。ご教授お願い致します。 <?php $db = new SQLite3('fukurou.db'); try { $db = new SQLite3('fukurou.db'); } catch (Exception $e) { print 'DBへの接続でエラーが発生しました。<br>'; print $e->getTraceAsString(); } $results = $db->query('SELECT * FROM syouhin'); while ($row = $results->fetchArray()) { print $row['no']; print $row['name']; print $row['kakaku']; print '<br>'; } $db = new SQLite3('fukurou.db'); $db->close();
- 締切済み
- その他(データベース)
- 自動的にchekboxを
mysqlからデータを表示して自動的にチェックボックスを 生成し、チェックしてsubmitしたらそれを表示したいのですが、checkboxのvalue値を自動生成できず悩んでいます。ご伝授お願いしたいます。 while ($row = mysql_fetch_assoc($result)) { print($row['name_no']); print($row['name']); print($row['price']); print('<input type="checkbox" name="no[]" value= row['name_no'])'); } print(' <input type="submit"></form>'); $idno=join($_POST["no"]); print($idno);
- 締切済み
- PHP
- sqlite3の.mode設定した状態を保存したい
sqlite3を使って学習しています。 コマンドプロンプトの設定について教えて下さい。 sqlite> select * from goods; 1|デジタルカメラ|35000 2|ノートPC|72000 3|プリンター|27500 sqlite> では、カラム名などの情報が表示されず見ずらいです。 なので起動するたびに下記のようにしています。 sqlite> .header on sqlite> .mode column sqlite> select * from customer; id name old address ---------- ---------- ---------- ---------- 1 aaa 52 bbb 2 谷 26 名古屋 2 近藤 32 東京 4 山下 18 大阪 5 長谷川 26 大阪 2 萩野 22 東京 1 aaa 52 bbb 4 廣瀬 12 山口 sqlite> 常にこの設定のままにしておきたいです。 いろいろ調べてみたのですが解決しませんでした。 設定を保存しておく方法はないのでしょうか。
- ベストアンサー
- MySQL
- C# Linq To XML について
C#をつかって、XMLファイルを読み出し、値を検索しようとしていますが、ほしい情報をとることができません。もしわかる方がいましたら、ご回答よろしくおねがいします。 XMLは下記の形式で、このtableが4つ続いてあります。 <table> <row> <column name="Tests">Tests Textvalues</column> </row> <row> <column name="A">Id</column> <column name="B">Description</column> <column name="C">Value</column> </row> <row> <column name="A">1</column> <column name="B">no</column> <column name="C">34 25 E0</column> </row> <row> <column name="A">2</column> <column name="B">yes</column> <column name="C">34 25 E1</column> </row> </table> <table>.....つづく 下記のようなコードを書きました。 XElement xelement = XElement.Load(ファイルパス); IEnumerable<XElement> tables = xelement.Elements(); foreach (XElement table in tables) { var name = from nm in table.Elements("row") where (string)nm.Element("colmun").Attribute("B")== "no" select nm; foreach (var a in name) { Console.WriteLine(a); } } 残念ながら、このコードでは、nameの中身がからっぽです。 目的は、Bの値からCの値を検索することです。 以上、よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
お礼
回答ありがとうございました。 おかげさまでできました。 PRIMARY KEYと設定したら今度は自動的に連番が振られました。 さっきは振られなかったのに? >INSERT INTO 表名 >VALUES(NULL,値1,値2,・・・) -- no列にはnullを格納するように指定 >あるいは、 >INSERT INTO 表名(列1,列2,・・・) -- no列は指定しない >VALUES(値1,値2,・・・ という書き方も重視していきます。 ありがとうございました。