2014-09-03 59 views
-2

我有一個PHP和MYSQL的問題。 我試圖更新行使用此代碼:無法更新MySQL中的PHP

$name=$_POST['Name']; 
$name=mysql_real_escape_string($name); 
$target = 'photo/'.$_FILES['file']['name']; 
$target=mysql_real_escape_string($target); 
$nick=$_POST['nick']; 
$nick=mysql_real_escape_string($nick); 
mysql_query("UPDATE Users SET Name='$name', Image='$target' WHERE Nickname='$nick' ;")or die(mysql_error()); 

現在,我可以編輯姓名,但我不能想象!太奇怪了! Html是正確的!

__UPDATE

我用mysql_real_escape_string爲他們所有。 我檢查了列名。

__UPDATE

我更新的代碼,它不返回任何mysql_error

+0

也許姓氏包含一個撇號? ! – 2014-09-03 15:31:23

+7

鮑比桌子在這裏想起 – Andy 2014-09-03 15:31:43

+1

1)'$ nick'似乎不存在。 2)你容易受到最簡單的注入攻擊3)'mysql_ *'被棄用,使用'PDO'或'mysqli_ *'代替 – 2014-09-03 15:32:57

回答

0

如上所述,mysql_ *被棄用(作爲PHP版本5.5.0)......但如果你已經有建立了一些你的項目使用它,然後你可以繼續使用它,但你絕不應該直接發送用戶發佈的值到數據庫中。首先逃脫他們。

$name = mysql_real_escape_string($_POST['Name']); 
$surname= mysql_real_escape_string($_POST['Surname']); 
+0

OP已經說過_「我爲它們使用了mysql_real_escape_string」_ – Raad 2014-09-03 15:41:44

+0

在這種情況下,他發佈了錯誤的代碼.. – Philipp 2014-09-03 15:42:44

+0

看起來他在編輯他的帖子的同時我正在打字。沒問題:) – 2014-09-03 15:43:48

0

我想你可能需要使用的語法:

$_FILES['userfile']['name'] 

$_FILES['file']['name'] 

獲取客戶端機器上的文件的原始名稱。 見http://php.net/manual/en/features.file-upload.post-method.php

編輯 如果您看到值的變量,但SQL不工作,你認爲它應該,那麼你需要調試。

更改您的代碼稍微讓你有:

$update_sql = "UPDATE Users SET Name='$name', Image='$target' WHERE Nickname='$nick' ;"); 
die($update_sql); 
mysql_query($update_sql) or die(mysql_error()); 

和檢查什麼是$update_sql(它添加到你的問題將是有益的)。如果出現問題,請修復並再次測試。一旦你開心,它應該工作,註釋die線。

+0

不,目標值正確返回,問題與查詢有關 – KappS 2014-09-03 16:14:01