2014-02-08 38 views
0

使用POST变量在我的PHP文件我下面不能在PHP中插入查询

<?php 
if(isset($_POST['submit'])){ 
    $con = mysqli_connect(bla); 
    $query = "insert into users (name,username,password) values($_POST['name'],$_POST['username'],$_POST['password'])"; 
} 

现在,即使如果条件不满足,就是没有完成时提交,我得到的错误。但是当我评论我的$ query = ...行时,没有错误。发生什么事?

+0

你得到的错误是什么? – hichris123

+0

请强烈考虑使用像PHP的PDO这样的库,而不是使用字符串插值进行这样的查询。正如所写的,这段代码对SQL注入攻击极其脆弱。 – pauljz

+0

@pauljz是的,谢谢你会记住这一点。这个只是用来练习的东西。做一些演示。 – Kraken

回答

1

你需要把'".周围的变量,就像这样:

$query = "insert into users (name,username,password) values('".$_POST['name']."','".$_POST['username']."','".$_POST['password']."')"; 
+0

即使我给变量而不是字面值?如果不是我传递的变量,而是字面字符串? – Kraken

+0

@Kraken这就是为什么你需要把它放在它的周围。然后它告诉MySQL你传递的变量是一个字符串。 – hichris123

1

发生的任何{}'{$_POST['password']}','...把这段代码在末尾显示错误$_POST['...']之间


if (mysqli_connect_errno()) { 
    echo mysqli_connect_error(); 
    exit(); 
} 
+0

试试你的查询按大写字母(Capslock on)Structs ... –

0

当你插入一个数组var iable成字符串,还有把它写两种方式:要么把周围的变量大括号,或者在指数离开了引号:

$query = "insert into users (name,username,password) 
      values('{$_POST['name']}', {'$_POST['username']}', {'$_POST['password']'})"; 

您还需要在查询本身的报价,对于正确的SQL语法。

0

考虑将您的发布值先放入本地变量,然后输入本地变量作为插入查询的值。例如:

$ name = $ _POST ['name'];

$ query = INSERT INTO users(name)VALUES(“$ name”)