2010-08-24 143 views
1

所以這可能是愚蠢的,但我不能得到任何東西插入MySQL的某個帳戶,我一直在盯着這個兩個小時。我是PHP的新手,所以我很可能會做一些愚蠢的事情。我附上了我試圖插入的DB的屏幕截圖。爲什麼我不能插入?

這裏是我說的:

http://dillondoyle.com/files/dbsetup.jpg(imgur似乎已經爲我)

這裏是我的代碼,並phpMyAdmin的告訴我GRANT ALL PRIVILEGES ON TO ...

$fbFirstName = $me['first_name']; 
$fbLastName = $me['last_name']; 
$fbEmail = $me['email']; 
mysql_real_escape_string($fbFirstName,$fbLastName,$fbEmail); 

$getuserresult = mysql_query("SELECT * FROM newusers WHERE fbUID=$uid"); 
$userrowsreturned=mysql_num_rows($getuserresult); 
if ($userrowsreturned=0) 
    { 
     echo '<br />user already exists, will update something here eventually<br />'; 
    } 
else { 
     $sql = mysql_query("INSERT INTO newusers (fbUID,callsAttempted,callsMade,fbEmail,fbFirstName,fbLastName) VALUES ($uid,'1','0',$fbEmail,$fbFirstName,$fbLastName)"); 
     if(!$sql) { 
      die("Nope"); 
     } else { 
      echo "1 record added"; 
     } 
     echo '<br />created user<br />'; 
} 
+1

你能死嗎(mysql_error())',而不是? – Matchu 2010-08-24 00:54:30

回答

3

這裏有兩件事出錯了。逃離是這樣:

$fbFirstName = mysql_real_escape_string($fbFirstName); 
// for all variables 

// or, just in one go: 
$fbFirstName = mysql_real_escape_string($me['first_name']); 

// and for integers, make sure they are actually integers (and prevent mayhem) 
$some_id = (int)$me['some_id']; 
$uid = (int)$uid; 

和插入你必須報非整數值時:

$sql = mysql_query("INSERT INTO `newusers` 
    (`fbUID`,`callsAttempted`,`callsMade`,`fbEmail`,`fbFirstName`,`fbLastName`) 
    VALUES 
    ('$uid',1,0,'$fbEmail','$fbFirstName',$fbLastName')"); 

(但你可以引用整數,以及 - 你永遠不知道,如果一些外部ID是,或有可能成爲,字母數字。)

+2

令人驚訝的是,餵養'mysql_real_escape_string'不正確的參數數據類型以及比它被記錄爲接受的多一個參數不是致命的。 – 2010-08-24 00:59:29

+0

輝煌!謝謝您的幫助。逐漸學習。我會在3分鐘內將其標記爲正確!謝謝! – 2010-08-24 01:05:00

+0

很好。我給出了一些你應該知道的背景知識,比如投射整數值(強制它們只是數字)和引用mysql中的字段/表名。 (如果你有一個名爲'order'或'table'的字段,你不會遇到很難找到的錯誤) – mvds 2010-08-24 01:10:24

0

首先你必須改變

$getuserresult = mysql_query("SELECT * FROM newusers WHERE fbUID=$uid"); 

$getuserresult = mysql_query("SELECT * FROM newusers WHERE fbUID='$uid'"); 

後更改插入到:

$sql = mysql_query("INSERT INTO newusers (fbUID,callsAttempted,callsMade,fbEmail,fbFirstName,fbLastName) VALUES 
    ('$uid','1','0','$fbEmail','$fbFirstName',$fbLastName')"); 
2

你有一個錯誤

if ($userrowsreturned=0) 

應該是(使用雙等於測試作業等價,單等於)

if ($userrowsreturned==0) 

我也認爲你actua lly意思如下,因爲你檢查用戶是否已經存在

if ($userrowsreturned==1) 
相關問題