PHPについて質問です。わかる方よろしくお願いします。

Mysql+phpでショッピングカートの作成をおこなっております。
Mysqlからデータを引き出し→フォームに表示→内容を書き換え→Mysqlにデータ送信。の流れを作りたいです。
データを引き出し→フォームに表示麻では出来ている様ですが、書き換えたデータは全く反映されません。
ーーーー前分省略ーーーーー
if ( ( $login = auth() ) == FALSE ) {
header( 'Location: login.php?redirect=login.php' ); exit;}
if ( $_POST['action'] == 'edit' ) {
if(strlen($_POST['con'])>60) $error.='会社名が30文字以上です<br>';//文字数のエラー
if($_POST['tel']=='') $error.='電話番号が入力されていません<br>';//空のエラー
if ( $error == '' ) {
$sql = "update user set
con = '" . mysql_real_escape_string( $_POST['con'] ) . "',
name_k = '" . mysql_real_escape_string( $_POST['name_k'] ) . "',
tel = '" . mysql_real_escape_string( $_POST['tel'] ) . "'
fax = '" . mysql_real_escape_string( $_POST['fax'] ) . "'
where id = '" . mysql_real_escape_string( $_SESSION['id'] ) . "'";
$result = mysql_query( $sql );
$error = '変更しました<br>'; } } 
$sql = "select * from user where id = '" . mysql_real_escape_string( $_SESSION['id'] ) . "'";
$result = mysql_query( $sql );
$users = mysql_fetch_array( $result );
?>

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/05/17 17:36:41
  • 終了:2010/05/18 14:14:27

ベストアンサー

id:koriki-kozou No.2

koriki-kozou回答回数480ベストアンサー獲得回数792010/05/17 18:00:30

ポイント34pt

Telとfaxのそれぞれの末尾にカンマが無いことが原因だと思われる

このようなミスは発見が難しいのでテスト段階ではエラー出力しておくようにしておいたほうがいい

$result = mysql_query( $sql );
if (!$result) {
    die(mysql_error() . "->" . $sql);
}
id:kasai-de_eb

お陰様で解決しました。本当にありがとうございました。

2010/05/18 14:13:27

その他の回答(3件)

id:Bombastus No.1

ホーエンハイム回答回数409ベストアンサー獲得回数522010/05/17 17:50:41

ポイント20pt
  1. 質問文では省略されているので分からないのですが、sessionは維持されていますか? 確認してください。
  2. update文を実行した際の$resultには何が代入されていますか? エラーになっていませんか? ご確認ください。
id:kasai-de_eb

有難うございます。

>1

参考書よりsession_start();と書いてあります。

>2

$link = mysql_connect( $db_host, $db_user, $db_password );

mysql_select_db( $db_name );

$result = mysql_query( 'set character set utf8' );

となっています。

2010/05/18 13:59:37
id:koriki-kozou No.2

koriki-kozou回答回数480ベストアンサー獲得回数792010/05/17 18:00:30ここでベストアンサー

ポイント34pt

Telとfaxのそれぞれの末尾にカンマが無いことが原因だと思われる

このようなミスは発見が難しいのでテスト段階ではエラー出力しておくようにしておいたほうがいい

$result = mysql_query( $sql );
if (!$result) {
    die(mysql_error() . "->" . $sql);
}
id:kasai-de_eb

お陰様で解決しました。本当にありがとうございました。

2010/05/18 14:13:27
id:ko8820 No.3

ko8820回答回数1221ベストアンサー獲得回数692010/05/17 18:14:19

ポイント18pt

$error = '';

を一番上ぐらいにかいてこの変数を初期化しておかないと

$errorの値が不定になって

if文の $error == '' が真にならず

UPDATE文が実行されません。

id:kasai-de_eb

有難うございました。

実行してみます。

2010/05/18 14:02:55
id:doropon No.4

回答回数94ベストアンサー獲得回数162010/05/17 18:56:44

ポイント18pt

とりあえずエラーの出力をdisplayかlogファイルに出すようにされたほうがいいかと思います。

で、tel=の行の最後に,がありません。

組み立てたsql文を表示させてチェックしてみてください。実際にmysqlでエラーが出ないかどうかはそこでわかると思いますので。

id:kasai-de_eb

有難うございました。

ためしてみます。

2010/05/18 14:13:46
  • id:koriki-kozou
    koriki-kozou 2010/05/17 18:02:25
    faxって書いたかも、、、ごめんなさい問題は telのほうだけね

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません