2017-05-08 24 views
1

不工作時,我嘗試更新我的數據庫更改現有用戶的位置,我收到的文本中,需要回聲,但用戶的細節都沒有改變。 這是我的代碼 - 服務器的細節已被刪除的目的是爲了保護隱私。更新現有用戶在PHP

{ 
    $server = ''; 
    $connectionInfo = array("Database"=>""); 
    $conn = sqlsrv_connect($server,$connectionInfo); 
    if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
    } 
    echo "Connected successfully"; 
    date_default_timezone_set('Europe/London'); 
    $username = $_POST['username']; 
    $location = $_POST['location']; 
    $dateAndTime = date('d-m-y h:i a', time()); 
    $selection_query = "SELECT 1 FROM users WHERE username = '".$username."'"; 

    $result = sqlsrv_query($conn, $selection_query, array($username)); 
    if (sqlsrv_fetch_array($result) == 0) 
    { 
    echo "Username does not exist."; 
    } 
    else 
    { 

    $updateUserQuery = "UPDATE users SET location='$location' datetime='$dateAndTime' where username='$username'"; 
    sqlsrv_query($conn, $updateUserQuery); 

    echo $username; 
    echo "'s location has been successfully updated to "; 
    echo $location; 
    echo " at "; 
    echo $dateAndTime; 
    echo "."; 
    } 

    sqlsrv_close($conn); 

     } 
+0

嘗試增加sqlsrv_query($康恩,$ updateUserQuery)或死亡(sqlsrv_error()); – delboy1978uk

+1

[Little Bobby](http://bobby-tables.com/)說*** [你的腳本存在SQL注入攻擊風險。](http://stackoverflow.com/questions/60174/how-can- I-防止-SQL注入式-PHP)***。即使[轉義字符串](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)是不安全的! –

+0

'更新位置設置位置...',這似乎是錯誤的,那是除非你實際上有一個名爲'location'的表格,其中有一個名爲'location'的列。喲耶... –

回答

0

因此,看着你的代碼,你應該檢查,以確保你的連接存在之前試圖做一個查詢。有點兒像這樣:

// Create connection 
$connectionInfo = array("Database"=>"dbName"); 
$conn = sqlsrv_connect($serverName, $connectionInfo); 


if($conn) { 
echo "Connection established.<br />"; 
}else{ 
echo "Connected successfully"; 

B/C它可能不是你的查詢將返回沒有結果,但你沒有連接在所有這一點很重要。

一旦你的,在您的查詢更改此行

$selection_query = "SELECT * FROM users WHERE username = '".$username."' LIMIT 1"; 

也是繼周杰倫什麼布蘭查德在評論中說,寫querys這種方式讓你打開SQL Inchections。這是用戶在您的查詢內寫入一個您不希望運行的查詢的方式。有點像「DROP All Tables」查詢。永遠不要允許。跟他的鏈接是一個好主意。

+0

,我只能把它作爲響應 注意:試圖讓非對象 – heckerman

+0

的屬性,您可以更新您的代碼所以我可以看到你改變了什麼? –

+0

是的,我現在已經完成了,只是在$ conn = sqlsrv_connect之後我添加了它 – heckerman