2016-07-01 18 views
0

私はユーザーが自分のプロフィールでユーザーの説明を編集できるようにしようとしています。しかし、私はこのエラーに来て、理由を理解できません。私の知る限り、それはユーザーがフォームに書いたものを保存する必要があり、スタックオーバーフロー私は、クエリのための正しい構文を使用していますが、それはまだfalseを返す上の異なった答えを見てのとおり、私はまだ十分に経験していないのですPHP/MYSQL編集プロファイル関数 - 間違ったクエリ構文?

'use near WHERE user_id=1' at line 4' 

すべてのSQL構文エラーを理解できるようにする。私はPHPとSQLの両方を学びたいので、多くの詳細が説明のために歓迎されています。ここで

はコードでそれを探して、あなたの時間を節約するためのクエリです:

$id = $_SESSION['user_id']; 
    $descrip =$_SESSION['user_description']; 

    //Save changes 

    $sql ='UPDATE users 
      SET user_description='.mysqli_real_escape_string($link,$descrip).' 
      WHERE user_id='.mysqli_real_escape_string($link, $id); 

これはeditdetail.phpファイルです。

<?php 
include 'connect.php'; 
include 'header.php'; 

?> 
<?php 
// default Avatar picture if "avatar" column empty. 
if(empty($_POST['user_avatar'])) 
{ 
$avatar = 'Images/default.jpg'; 
} 
else 
{ 
$avatar = $_POST['user_avatar']; 
} 
if(empty($_POST['user_description'])) 
{ 
$description = 'Edit your description to let people know more about you!'; 
} 
else 
{ 
$description = $_POST['user_description']; 
} 
// check if user is signed in 
if(!isset($_SESSION['signed_in'])) 
{ 
//the user is not signed in. 
echo '<a href="/Latest_try/signin.php">Sign in</a> to view your profile.'; 
} 
else 
{ 
if($_SERVER['REQUEST_METHOD'] != 'POST') 
{ 
echo '<div id="LeftCol"><div id="Photo"> <img src="'.$avatar.'" width="205" height="205"></div> 
    <div id="ProfileOptions"> Usersince: '.$_SESSION["user_date"].'<br/> 
    <a href="editavatar.php">Edit avatar</a></div></div> 
    <div id="rightpart"> <div id="Info"> 
    <span><a href="editdetails.php">Edit Details</a></span> 
    <p><strong>Username: '.$_SESSION["user_name"].' </strong></p> 
    <p><strong>Email: '.$_SESSION["user_email"].' </strong></p> 
    <p><strong><u>Description</u>:     </strong></p> 
    <p> '.$description.' </p> 
    <form method="post" action=""> 
     <br /><u>Edit description</u>:<br /><br /><textarea name="user_description" /></textarea><br /> 
     <input type="submit" value="Update description" /> 
    </form> 
    </form> 
    </div> 
    </div> 
    </html>'; 
} 
else 
{ 
    $id = $_SESSION['user_id']; 
    $descrip =$_SESSION['user_description']; 
    //Save changes 
    $sql ='UPDATE 
       users 
      SET user_description='.mysqli_real_escape_string($link,$descrip).' 
      WHERE user_id='.mysqli_real_escape_string($link, $id); 


    $result = mysqli_query($link,$sql); 
    if(!$result) 
    { 
     //something went wrong, display the error 
     echo 'Error' . mysqli_error($link); 
    } 
    else 
    { 
     echo 'Description updated.'; 
    } 
} 
} 

答えて

1

周りの単一引用符または二重引用符を使用する必要がありますを挿入すると、あなたのSQL mysql:

"UPDATE 
      users 
     SET user_description='".mysqli_real_escape_string($link,$descrip)."' 
     WHERE user_id=".$id; 

しかし、はるかに良いのは、準備されたステートメントについて学ぶことです。

+0

@ chris85そうです。 – Jens

+0

ありがとう、あなたは準備された声明の良い説明を提供する信頼できる情報源を知っていますか? – Richard

+0

@リチャードグーグル – Jens

1

変更

$sql ='UPDATE 
       users 
      SET user_description="'.mysqli_real_escape_string($link,$descrip).'" 
      WHERE user_id="'.mysqli_real_escape_string($link, $id).'"'; 

アップデートまたは文字列あなたが文字列arroundの単一引用符を使用する必要があり、その

+0

説明がうまくいくので、OPはあなたが変更を行った理由を知っています。 – chris85

関連する問題