2013-07-17 80 views
-1

我正在創建個人資料更新頁面,但它不起作用。要做到這一點,我檢查表user_info是否已經有信息;如果是,我使用mysql UPDATE查詢更新信息,否則,我插入新信息。正在更新個人資料日期php/mysql無效

我總是收到錯誤「錯誤」。

P.S:

  • 這是不是一個註冊頁面,註冊在另一表中進行。
  • $ 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'); 
} 

?> 
+1

您是否一起使用PDO和mysql_?它看起來像'$ q'是通過'mysql_query'運行查詢的結果;然後你將它傳遞給PDO再次運行。 – andrewsi

回答

0

您的更新查詢語法錯誤,您正在使用的INSERT語法。更新的正確語法是:

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

您也可能想在那裏有一個where子句,因此它只更新目標記錄而不是所有記錄。

看起來你在混合mysql_*和PDO或MySQLi。你傳遞一個mysql結果資源到PDO::prepare()MySQLi::prepare()這是錯誤的。 PDO:prepare()應該被賦予SQL字符串,並且您應該使用佔位符並綁定您的輸入,而不是將它們連接到SQL中。

+0

連接輸入不起作用?我們使用PDO時必須綁定它們嗎? – Y1NL30

+0

如果你綁定它們,那麼你可以防止任何SQL注入的可能性,所以這總是推薦的方法。 – MrCode

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'"); 

嘗試在你的變量直接在數據庫上運行的使用替代值的查詢,以錯誤的更好的視野。