2015-03-30 74 views
0

我正在爲android開發一個移動應用程序,我試圖將手機上的一個變量與已經存在於數據庫中的變量進行比較,這樣如果它是新的,我可以插入它,如果它已經存在,就更新它。

$name_check = $_POST['Name']; 

$result = mysqli_query($con, "SELECT * FROM Data WHERE Name = $name_check"); 
if($result && mysqli_num_rows($result) > 0) 
{ 
// Update entry 
} 

此代碼似乎並沒有因爲這塊將被跳過,去到哪裏我一個新的條目被寫入else塊的工作,所以我最終的項目,而不是一個更新的負載。

我在表格中有另一個名爲「Level」的字段,當我比較它似乎工作,這只是進一步混淆了我。

如果任何人有任何洞察如何做到這一點或爲什麼它不適合我,我會非常感激。

+2

你的代碼是不安全的,可以很容易地注入。 – Shubanker 2015-03-30 18:20:27

+0

我知道,我正在做這個學習練習。只是想知道爲什麼比較不起作用。 – Blocky 2015-03-30 18:22:24

回答

0

使用引號:

$result = mysqli_query($con, "SELECT * FROM Data WHERE Name = '$name_check'"); 
+0

非常感謝!我無法相信我嘗試了多少其他的事情。 – Blocky 2015-03-30 18:29:06

+1

我建議你保護這個領域。注意MySQL準備好的語句。 – 2015-03-30 18:32:28

+0

是的,那是我從這裏開始的下一步。謝謝你的幫助。 – Blocky 2015-03-30 18:34:24

0

使用此:

$result = mysqli_query($con, "SELECT * FROM Data WHERE Name = '" . $name_check . "'"); 
+0

你之前沒有關閉過這個開頭; – 2015-03-30 18:26:50

+0

只是忘記用雙引號結尾 – 2015-03-30 18:42:54

0
$result = mysqli_query($con, "SELECT * FROM Data WHERE Name = '".$name_check."'"); 

這應該做工精細

+1

所有列出的答案都可以正常工作,但請記住這是一個非常好的案例來演示SQL注入。因爲可能有些東西會惡意放入您的表單中,並收集有關您的數據庫的信息。一些方法是在運行插入語句或使用準備好的數據庫語句之前使用數據驗證。 – 2015-03-30 18:34:20

相關問題