2015-03-30 75 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

相关问题