-1

プロフィール更新ページを作っているのですが、うまくいきません。user_infoそのために、テーブルに既に情報があるかどうかを確認します。はいの場合は mysqlUPDATEクエリで情報を更新し、そうでない場合は新しい情報を挿入します。

「エラー」というエラーが常に発生します。

PS:

  • これは登録ページではなく、別のテーブルで登録が行われます。
  • $new_name 変数は、基本テーブルである別のテーブルで回答する予定です。
<?php

session_start();
include('include/connection.php');
if (isset($_SESSION['id']))

    {
    $id = $_SESSION['id'];
    $new_name = (isset($_POST['name']) ? $_POST['name'] : null);
    $location = (isset($_POST['location']) ? $_POST['location'] : null);
    $bio = (isset($_POST['bio']) ? $_POST['bio'] : null);
    $job = (isset($_POST['job']) ? $_POST['job'] : null);
    $birthday = (isset($_POST['birthday_year']) ? $_POST['birthday_year'] : null) . '-' . (isset($_POST['birthday_month']) ? $_POST['birthday_month'] : null) . '-' . (isset($_POST['birthday_day']) ? $_POST['birthday_day'] : null);
    $phone = (isset($_POST['phone']) ? $_POST['phone'] : null);

    $result_info = mysql_query("SELECT * FROM user_info WHERE(id='".$id."')");  
    $n_info = mysql_num_rows ($result_info);
    if ( $n_info = 0 )
    {
    $q = mysql_query ("INSERT INTO user_info (id , dateOfBirth , phoneNumber , bio , location , work) VALUES ('$id' , '$birthday' , '$phone' , '$bio' , '$location' , '$job' )")
    ;
    }
    else
    {
    $q = mysql_query ("UPDATE user_info (id  , dateOfBirth , phoneNumber , bio , location , work) VALUES ('$id' , '$birthday' , '$phone' , '$bio' , '$location' , '$job' )")
    ;
    }
    $query = $q;
    $req = $cnx->prepare($query);
    $req->execute();
    if ($query){
            echo 'Yes';
    }else{
            echo 'Error';
    } 
    }

else{
header('Location: index.php');
}

?>
4

2 に答える 2

0

UPDATE クエリを変更する

From:
$q = mysql_query ("UPDATE user_info (id  , dateOfBirth , phoneNumber , bio , location , work) VALUES ('$id' , '$birthday' , '$phone' , '$bio' , '$location' , '$job' )")

To:
$q = mysql_query ("UPDATE user_info SET id='$id' , dateOfBirth = '$birthday', phoneNumber = '$phone' , bio = '$bio', location = '$location', work = '$job'");

エラーをよりよく表示するために、変数の代替値を使用してクエリをデータベースで直接実行してみてください。

于 2013-07-17T11:36:52.070 に答える
0

UPDATE クエリ構文が間違っています。INSERT 構文を使用しています。UPDATE の正しい構文は次のとおりです。

UPDATE table SET field1 = 'val1', field2 = 'val2', field3 = 'val3'

また、すべてのレコードではなく、ターゲット レコードのみを更新するように、where 句が必要になることもあります。

mysql_*PDOまたはMySQLiと混合しているようです。mysql の結果リソースを渡しているPDO::prepare()か、MySQLi::prepare()どちらが間違っていますか。PDO:prepare()SQL 文字列を指定する必要があり、SQL に連結するのではなく、プレースホルダーを使用して入力をバインドする必要があります。

于 2013-07-17T11:13:06.043 に答える