• 締切済み

Webアプリ作成

<html> <head> <meta http-eqiv="Content-Type" content="text/html; charset=EUC-JP"> <title>車名とグレード登録ページ</title> </head> <body> <h1>車名とグレード登録ページ</h1> <?php if (empty($_POST['carname']) || empty($_POST['gradecode'])) { print("不正なアクセスです"); die(); } $carname = $_POST['carname']; $gradecode = $_POST['gradecode']; $pg_cn = pg_connect("dbname=carinfor"); if (!$pg_cn) { die("データベースに接続できませんでした"); } エラー箇所→ $sql = "update carprice set carname='$carname' where gradecode='$gradecode'"; $rt = pg_query($pg_cn, $sql); if (!$rt) { echo("データベースに登録できませんでした<br/>"); echo("もう一度やりなおしてください<br/>"); echo("<a href=\"charge-input.php\">戻る (テキスト入力)</a><br/>"); echo("<a href=\"charge-select.php\">戻る (select)</a>"); die(); } else { echo("データベースに正常に登録されました<br/>"); echo("現在の情報を確認するには<a href=\"charge-list.php\">こちら</a>"); echo("を参照してください<br/>"); } pg_close($pg_cn); ?> </body> このページへ行くと Warning: pg_query() [function.pg-query]: Query failed: ERROR: duplicate key violates unique constraint "carprice_pkey" in ~/carinfor/charge-submit.php on line 21 とエラーがでます。 この解決方法が分かりません。解決方法を教えてください。 表carpriceで、carnameは主キーであり外部キー、gradecodeは主キーです。 主キーが二つあるのが問題かなと思うのですがどうなのでしょうか?

みんなの回答

  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.1

一意制約に反しているとエラーは言っているのでSQLを修正する必要がありますね。 そのSQLが通らなければまずいということならテーブルの設計が間違っているということになります。 それから主キーが二つあるということありえないはずですが、複合主キーのことでしょうか。

sinsuki12
質問者

お礼

回答ありがとうございます。 テーブルの設計を見直すことにしました。

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

関連するQ&A

  • データーベース接続 入力フォーム

    phpでデータベースを作成しています! 登録フォームからデータを入力して新しくデータを追加したいと思います! 番号 int プライマリーキー 氏名 varchar 住所 varchar です いまのプログラムは番号が重複じゃなかったら氏名と住所空白でも登録できてしまいます! 全部しないとエラーメッセージが返ってきて入力しなおさせるにはどうしたらいいですか? if文の書き方を教えてください また番号を空白だとエラーが返ってきます。どうしたらいいですか? 入力フォームのプログラム(regist.php) <HTML> <HEAD><TITLE>新規登録</TITLE></HEAD> <BODY> <BLOCKQUOTE> <FORM ACTION = "toroku.php" METHOD = "POST"> <BR><BR>登録画面<BR><BR> 番号 <INPUT TYPE="NAMBER" NAME = "ID"><BR><BR> 氏名 <INPUT TYPE="TEXT" NAME = "NAME"><BR><BR> 住所 <INPUT TYPE="TEXT" NAME = "ADDR"><BR><BR> <A HREF="http://localhost/test5.php"> <INPUT TYPE = "SUBMIT" VALUE = "登録する"></A> <A HREF="http://localhost/test5.php">一覧に戻る</A> </BODY> </BLOCKQUOTE> </FORM> </BODY> </HTML> 追加登録のプログラム(toroku.php) <HTML> <HEAD><TITLE>登録完了</TITLE></HEAD> <BODY> <?php $con=mysqli_connect("localhost","root","パスワード","db_test"); // Check connection if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } $sql="INSERT INTO tbl_test (番号, 氏名, 住所) VALUES ('$_POST[ID]','$_POST[NAME]','$_POST[ADDR]')"; if (!mysqli_query($con,$sql)) { die('Error: ' . mysqli_error($con)); } echo "登録完了しました"; mysqli_close($con); ?> <BR><BR> <A HREF="http://localhost/test5.php"> <INPUT TYPE = "SUBMIT" VALUE = "一覧へ戻る"></A> </BODY> </HTML> 表示のプログラム(test5.php) <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>一覧画面</title> </head> <body> <BLOCKQUOTE> <BR>一覧画面<BR><BR> <?php $con=mysqli_connect("localhost","root","パスワード","db_test"); // Check connection if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } $result = mysqli_query($con,"SELECT * FROM tbl_test"); echo "<table border='1'> <tr> <th>番号</th> <th>氏名</th> <th>住所</th> </tr>"; while($row = mysqli_fetch_array($result)) { echo "<tr>"; echo "<td>" . $row['番号'] . "</td>"; echo "<td>" . $row['氏名'] . "</td>"; echo "<td>" . $row['住所'] . "</td>"; echo "</tr>"; } echo "</table>"; mysqli_close($con); ?> <BR><BR><BR> <A HREF="http://localhost/regist.php"> <INPUT TYPE = "SUBMIT" VALUE = "新規登録"></A> </BLOCKQUOTE> </body> </html> 見づらくってごめんなさい

    • ベストアンサー
    • PHP
  • PHPのエラーについて

    データベースから出力し、リンクをつけたいと考えていますが、下記のようなエラーが出力されます。 どのように対応すれば解消されるでしょうか? データベースにはthread_idという項目は存在します。 echo から始まる列が38行目にあたります。 よろしくお願いします。 【コード】 <?php $sql = "SELECT * FROM thread WHERE category_id =1"; $date = mysql_query($sql,$link); while ($post = mysql_fetch_assoc($date)) { $thread_id = $post['thread_id']; echo '<br>' . '<a href="thread.php?id=<?php echo htmlspecialchars($post['thread_id']); ?>">' . $post['thread_title'] .'</a>'.'<br>'; } ?> 【エラー】 Parse error: syntax error, unexpected 'thread_id' (T_STRING), expecting ',' or ';' in C:\xampp\htdocs\index.php on line 38

    • 締切済み
    • PHP
  • phpでmysqlで作成したdbを表示したい。

    現在phpのプログラムの学習を行っています。、 phpmyadminで作成したデータベースを読み込もうとしているのですが、うまくいきません。 参考書やサイトも参考にしたのですが、警告が出ています。 よくわからなくなってきましたので、教えていただきたいです。 ------------------------------------------------------------------------------- ・実行結果 Resource id #31Resource id #40 接続ID: 選択の成否: 結果ID: 行数: Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\job\job.php on line 45 ------------------------------------------------------------------------------- ・ソース <?php /*$con = mysql_connect('localhost','root','root') or die("接続できません"); print "接続に成功しました。"; mysql_close($con);*/ $url = "localhost"; $user = "root"; $pass = "***"; $db = "***"; // MySQLへ接続する $link = mysql_connect($url,$user,$pass) or die("MySQLへの接続に失敗しました。"); // データベースを選択する $sdb = mysql_select_db($db,$link) or die("データベースの選択に失敗しました。"); // クエリを送信する $sql = "SELECT * FROM t01prefecture"; $result = mysql_query($sql, $link) or die("クエリの送信に失敗しました。<br />SQL:".$sql); //結果セットの行数を取得する $rows = mysql_num_rows($result); //結果保持用メモリを開放する mysql_free_result($result); echo "$link"; echo "$sdb"; echo "$result"; echo "$rows"; echo "<br>"; echo "接続ID:<?= $link ?><br />"; echo "選択の成否:<?= $sdb ?><br />"; echo "結果ID:<?= $result ?><br />"; echo "行数:<?= $rows ?><br />"; $recordSet = mysql_query('SELECT * FROM my_items'); while($data = mysql_fetch_assoc($recordSet)){ /*このあたりが45行目 */ echo $data['item_name']; /* ここの値を変える*/ echo '<br>'; } // MySQLへの接続を閉じる mysql_close($link) or die("MySQL切断に失敗しました。");

    • ベストアンサー
    • PHP
  • PostgreSQLに書き込むことが出来ない

    環境→Windows XP Home Edition Apache→Apache 2.0.59 PostgreSQL→PostgreSQL8.1.6 PHP→PHP4.4.4 DBに書き込もうとしていますがなかなか上手くできません。 <?php //データベースに接続する $conn = pg_pconnect("user=postgres password=grjtf dbname=mytbl"); //データベースに接続出来るかチェック if(!$conn) { //エラーメッセージ echo "An error occured.\n"; exit; } else { //接続成功メッセージ print "DB(mytbl)に接続しました。<br>"; } //データベースに接続し、mytblからidとnameを取り出す $result = pg_query($conn,"SELECT id,name FROM mytbl"); //データベース(mytbl)からidとnameを取得する if (!$result) { //エラーメッセージ echo "An error occured.\n"; exit; } else { //接続成功メッセージ print "idとnameを取得しました。<br>"; } //データベースmytblに書き込む if(isset($_POST["action"]) && $_POST["sign"] == '書き込み') { //名前とスコアが何も書かれていなかった場合 if($_POST["id"] && $_POST["name"]) { //データベースに書き込む $sql="INSERT INTO mytbl(id,name) VALUES('$id','$name')"; pg_query($conn,$sql); //成功メッセージ print "DB(mytbl)に書き込みました。<br><br>"; } else { //エラーメッセージ print "書き込めませんでした。<br><br>"; } }

    • ベストアンサー
    • PHP
  • WEB経由のPHPによるSQLServer接続ができない

    FedoraCore6を使っています。WEB(Apache)経由のPHPによるSQLServer接続(query発行)ができません。環境を報告しますと、 OS: FedoraCore6 Apache/2.2.6 PHP: Version 5.1.6 DB: SQLServer2005 です。 以下のようなphpを組みました(セキュリティ上マズい部分は■にしています) ------------------ <?php print("開始します<br />"); $myServer = "TargetDB"; // freetds.conf での定義名 $myUser = "■■"; // DB接続ユーザ名 $myPass = "■■■■■"; // パスワード $db = @mssql_connect($myServer, $myUser, $myPass); if($db){ print "接続に成功しました\r\n"; }else{ print "接続に失敗しました\r\n"; } if(!mssql_select_db("■■■■■")) { die("データベースに接続できませんでした\r\n"); } $query = "SELECT * from ■■■■■■"; $result = mssql_query($query); while($row = mssql_fetch_array($result)) { foreach($row as $key => $value){ echo $key.":".$value."<br />\r\n"; } echo "<br />\r\n"; } if(!mssql_close($db)) { die("DB切断不可能\n"); } print "終わりました<br />"; ?> ---- WEB経由で見ると、 --- 開始します --- だけが表示されます。htmlソースを見ても --- 開始します<br /> --- で、エラーも何も発生していません。 PHPがweb上で動いていないのではと思い、 <?php phpinfo(); ?> というphpを作ってみましたが問題なく表示されます。 実行できてないのかなと思いコマンドラインで以下のように実行したところ、 #/usr/bin/php-cgi -q test.php 問題無く結果が表示されます。 不思議です。このような状態の場合、何が疑わしいのでしょうか。 お心当たりのある方、ご教授ください。

    • 締切済み
    • PHP
  • PHPでユーザ登録フォーム&表示プログラムの作成

    質問させていただきます。 PHPでユーザ登録フォームと表示プログラムの作成をしているのですが、 登録フォームはなんとかできたのですが、表示プログラムに添付画像のようにテーブルに出力させるにはどうやればいいでしょうか。 またこのプログラムだと若干エラーが出ているようでそれも気になりまして、教えていただければ幸いです。 <?php echo "<table border=1>"; echo "<tr><td>姓(名前){$_POST['ln']}</tr></td><tr><td>名(名前){$_POST['fn']}</tr></td><br />"; echo "性別 : "; if($_POST['seibetsu'] =="1") echo "男"; else echo "女"; echo "<br />"; echo "都道府県 : {$_POST['pref']}<br />"; echo "市区町村 : {$_POST['addr1']}<br />"; echo "番地 : {$_POST['addr2']}<br />"; echo "生年月日 : {$_POST['year']}年{$_POST['month']}月{$_POST['day']}日<br />"; echo "アドレス : {$_POST['email']}<br />"; echo "電話番号 :{$_POST['phone1']}-{$_POST['phone2']}-{$_POST['phone3']}<br />"; ?>

    • ベストアンサー
    • PHP
  • PHP初心者です。

    PHP・Mysql超初心者です。掲示板を自分で考えて作っているのですが、 わからないところがあり困っています。 管理登録画面で管理noと品名を入力し、登録をクリックするとMysqlに データを保存します。 管理表の画面で、品名(上記のMysqlから品名をセレクトボックスで 表示)と注文数を入力し、Mysqlに保存したいのですが、その命令の 所でエラーが出ます。 書き方やセキュリティ等は無視して下さい。 どなたかご教授下さい。 //管理登録画面 *kanri.html <html> <meta http-equiv="content-type" content="text/html; charset=euc-jp"> <body> <form method="post" action="touroku.php"> <h3>管理登録</h3><br> NO:<input type="text" name="no"><br><br> 品名:<input type="text" name="hinmei"><br><br> <input type="submit" value="登録"> </form> </body> </html> *touroku.php <html> <meta http-equiv="content-type" content="text/html; charset=euc-jp"> <body> <? $no=$_POST["no"]; $hinmei=$_POST["hinmei"]; $db=mysql_connect("***","***","***") or die("接続失敗"); print("デ―タベースサーバーに接続できました<br>"); mysql_select_db("***")or die("データベースが見つかりません".mysql_error()); print("データベースに接続しました<br>"); $a="insert into kanri_list(no,hinmei)values('$no','$hinmei');"; mysql_query($a)or die("命令が違います"); $a="select * from kanri_list;"; $kekka=mysql_query($a)or die("命令が違います"); mysql_close($db); ?> 登録しました!<br><br> </body> </html> //管理表 *kanri.php <html> <meta http-equiv="content-type" content="text/html; charset=euc-jp"> <body> <form method="post" action="kanri1_1.php"> <h2>管理表</h2><br> 品名:<select name="kanri"> <? $kanri=$_POST["kanri"]; $db=mysql_connect("***","***","***") or die("接続失敗"); mysql_select_db("***")or die("データベースが見つかりません".mysql_error()); $a="select * from kanri_list;"; $kekka=mysql_query($a)or die("命令が違います"); while($b=mysql_fetch_array($kekka)){ print("<option value='".$b[1]."'>".$b[1]."</option>\n"); } mysql_close($db); ?> </select> <br> 注文数:<input type="text" name="kazu"><br> <input type="submit" value="登録"> </form> </body> </html> 上記の登録ボタンを押すと「命令が違います」とエラーが出ます。 *kanri1_1.php <html> <meta http-equiv="content-type" content="text/html; charset=euc-jp"> <body> <? $kanri=$_POST["kanri"]; $kazu=$_POST["kazu"]; $db=mysql_connect("***","***","***") or die("接続失敗"); mysql_select_db("***")or die("データベースが見つかりません".mysql_error()); $a="insert into kanri1_list(kanri,kazu)values('$kanri',$kazu');"; mysql_query($a)or die("命令が違います"); $a="select * from kanri1_list;"; $kekka=mysql_query($a)or die("命令が違います"); mysql_close($db); ?> 登録しました!<br> </body> </html>

    • ベストアンサー
    • PHP
  • mysql_select_db()関数に関して・・・。MySQLでテーブルの作成ができません。

    こんにちは、さくらインターネットのレンタルサーバでMySQLとphpを連動させたサイトを作っているのですが、初歩的なことでつまずいてしまい困っています。 まず、フォームで入力させたデータをPOSTで受け取り、その受け取ったデータをテーブル名として、データベース上にテーブルをつくりたいのですが、エラー文が表示されるだけでできません。 データベース自体への接続はできているようなのですが、phpMyAdminで見ても全くできていません。SQL文をphpMyAdminで実行するときちんと正常にテーブルができますので、そもそもデータベースが使用できないとか、もしくはSQL文の間違いでもなさそうです。 $t1 = $_POST['test1']; $t2 = $_POST['test2']; echo"{$t1}を受け取りました<br>"; $link = mysql_connect('mysql**.db.sakura.ne.jp', 'ユーザー名', 'パスワード'); if (!$link) { die('接続失敗です。'.mysql_error()); } print('接続に成功しました。<br>'); //1.さくらインターネット内にあるデータベースの選択 $db_name = "自分のデータベース名"; $selectDB = mysql_select_db($db_name,$link) or die("接続できません。"); //2.データベース内にテーブルを作成。 echo"{$t1}がテーブル名になります。<br>"; //3.テーブル作成用SQL文 $str_sql = "CREATE TABLE {$t1}" . "(" . "{$t2} INT(7) NOT NULL," . ");"; //4.上のSQL文を実行してテーブルを作る。 mysql_query($str_sql,$selectDB); echo"データベース内にテーブル「{$t1}」を作成しました。<br>"; //データベースへの接続を切断 $close_flag = mysql_close($link); if ($close_flag){ print('切断しました。<br>'); } 実行結果:Warning: mysql_query(): supplied argument is not a valid MySQL-Link resourceとなってテーブルは作成されず。 自分でも調べて見たところ、mysql_connect()での接続はちゃんとできているようなのですが、その次のmysql_select_db()関数がうまく働いていないようです。 つまりデータベースの選択ができていないので当然エラーとなるようです。 もう何日も悩んでいます。わかる方がいましたらどうぞよろしくお願いします。

    • ベストアンサー
    • PHP
  • フォームからMySQLにデータが書き込めません。

    CentOS5.3 + php5.1.6 + MySQLServer version: 5.0.77の環境です。 下記のスクリプトを書きましたが、点数を書いてsubmitすると、「登録できませんでした」が表示され、データの書き込みができません。 var_dump($sql); で$sqlの内容も表示されますし、echo($conn) も Resource id #2が返ります。 .MYD, .MYI,.frm のパーミッションは777です。 どこが不具合の原因でしょうか? データを登録するためには、どのように修正すれば良いでしょうか? ご教示願えれば幸甚です。 [tensuform.php] <HTML><BODY> <H1 ALIGN="CENTER">点数</H1> <TABLE BORDER="1" ALIGN="CENTER" CELLSPACING="0"> <FORM action="tensuinst.php" METHOD ="POST"> <TR><TD BGCOLOR="#CCCCCC">点数</TD> <TD><INPUT TYPE="TEXT" NAME="tensu" value="" maxlength="3"></TD></TR> <INPUT TYPE="SUBMIT" NAME="SUBMIT" VALUE=" 書 込 "> <INPUT TYPE="RESET" VALUE=" ク リ ア "></TD> </TR></TABLE></FORM></BODY></HTML> [ tensuinst.php] <HTML><BODY> <?php $tensu=$_POST['tensu']; print $tensu."<br/>"; if($tensu ==" "){ echo ("点数が書き込まれていません。"); ?> <a href="tensupoform.php">"こちらからデータを書き込んで下さい。"</a><BR> </BODY></HTML>); <?php exit(); }elseif(!$conn = mysql_connect('localhost', "abcd", "efgh")){ die("データベース接続エラー.<br />"); }else{ mysql_select_db("wxyz", $conn); $sql = "INSERT INTO kokugo('tensu') VALUES('$tensu')"; // var_dump($sql); echo("<br>"); // echo($conn)."<br>"; mysql_query($sql, $conn) or die("登録できませんでした" ); mysql_close($conn); print("登録しました。"); } ?>

    • ベストアンサー
    • MySQL
  • phpとmysqlの検索システムを作成しているのですが

    半角英数字で検索すると、ちゃんと検索できるのですが、日本語や全角で検索しようとすると 接続ID=Resource id #2データベースを選択しました Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\php.php on line 54 検索結果 該当するデータはありませんでした 名前 メーカー Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\php.php on line 69 と出てしまいます。 phpのソース <html> <head> <title>検索結果</title> <meta http-equiv="Content-Type" content="text/html;charset=eucjp"> </head> <body> <?php $con=mysql_connect("","root",""); if(!$con){ echo ("MYSQL接続に失敗しました"); exit(); } else { echo ("接続ID=$con"); } mysql_query("SET NAMES sjis") or die("can not SET NAMES sjis"); $db=mysql_select_db("a05"); if(!$db) { echo ("データベースを選択できませんでした"); } else{ echo("データベースを選択しました"); } $name=$_POST["name"]; $meka=$_POST["meka"]; $mekanum=array("ミズノ","ヨネックス","ブリヂストン"); $meka=$mekanum[$meka]; $query = "select name,meka from test where"; if($name != "") { $query = $query . " name like '%$name%' "; } if($meka != ""){ $query = $query . " and meka like '%$meka%' "; } $result = mysql_query($query); $num_rows=mysql_num_rows($result); ?> <br>検索結果<br> <?php if($num_rows== 0){ $message="該当するデータはありませんでした"; } else $message=$num_rows ."件ヒットしました"; echo $message; ?> <br><table border=1><tr><td>名前</td><td>メーカー</td></tr><br> <?php while($row = mysql_fetch_array($result)):?> <tr><td><?php echo "$row[name]"; ?></td><td><?php echo "$row[meka]"; ?></td></tr> <? endwhile; ?> </table> <a href="html.html">再検索</a> </body> </html> htmlのソース <html> <head> <title>検索</title> <meta http-equiv="Content-Type" content="text/html;charset=eucjp"> </head> <body> <form method="POST" action="php.php"> <table border> <tr> <td height="30"><font size="5">&nbsp;ラケット名</font> <td height="30">&nbsp;<input type="text" name="name" size="40" maxlength="255"> </td></tr> </table> <table border> <tr> <tr> <td>メーカー</td> <td> <input type="radio" name="meka" value="ミズノ">ミズノ<br> <input type="radio" name="meka" value="ヨネックス">ヨネックス<br> <input type="radio" name="meka" value="ブリヂストン">ブリヂストン<br> <br> </td> </tr> </table> </SELECT> </td> </table> <input type="submit" name="submit" value="検索"> <input type="reset" value="条件クリア"> </tb> </body> </html> 分かる方がいたら教えていただきたいです、助言や指摘などありましたら、よろしくお願いします。