使用php将表单中的数据插入到mysql数据库中

时间:2014-01-13 09:54:15

标签: php

我使用了这段代码

   <?php
    $conn = new PDO("mysql:host=localhost;dbname=CU4726629",'CU4726629','CU4726629'); 
    $sql="INSERT INTO review (username, movie_name, ratings) VALUES ("$_POST['username']","$_POST['moviename']","$_POST['ratings']")";

   header('Location: reviews.php');  
  ?>

但它一直给我这个错误

  

解析错误:语法错误,意外的T_VARIABLE   第5行/home/4726629/public_html/check_login.php

5 个答案:

答案 0 :(得分:2)

以此为例:

 <?php
// insert some data using a prepared statement
$stmt = $dbh->prepare("insert into test (name, value) values (:name, :value)");
// bind php variables to the named placeholders in the query
// they are both strings that will not be more than 64 chars long
$stmt->bindParam(':name', $name, PDO_PARAM_STR, 64);
$stmt->bindParam(':value', $value, PDO_PARAM_STR, 64);
// insert a record
$name = 'Foo';
$value = 'Bar';
$stmt->execute();
// and another
$name = 'Fu';
$value = 'Ba';
$stmt->execute();
// more if you like, but we're done
$stmt = null;
?>

您刚刚在上面的代码中写了一个字符串:

    $sql="INSERT INTO review (username, movie_name, ratings) VALUES ("$_POST['username']","$_POST['moviename']","$_POST['ratings']")";

答案 1 :(得分:1)

以上答案是正确的,您需要连接字符串以形成有效的SQL查询。你可以回显你的$ sql变量来检查要执行的内容以及是否有效的sql查询。您可能希望查看将在sql查询中使用的转义变量,否则您的应用程序将容易受到sql注入攻击。

查看

http://php.net/manual/en/pdo.quote.php

http://www.php.net/manual/en/pdo.prepare.php

此外,您还需要查询准备好的sql语句。

查看http://www.php.net/manual/en/pdo.query.php

答案 2 :(得分:1)

有几个错误:

1)你必须连接字符串! 像这样:

$sql="INSERT INTO review (username, movie_name, ratings) 
                 VALUES (".$_POST['username'].",".$_POST['moviename'].",".$_POST['ratings'].")";

2)你根本没有使用PDO: 在创建“插入”字符串后,您必须查询数据库本身,例如使用

$conn->query($sql);

nb:它是伪代码

3)主要问题是这种方法是错误的。 以这种方式构造查询会导致许多安全问题。 例如:如果我把“moviename”作为“; drop table review”,该怎么办? ???它会破坏你的数据库。 所以我的建议是使用prepared statement

$sql="INSERT INTO review (username, movie_name, ratings) 
                 VALUES (?,?,?)";
$q = $conn->prepare($sql);
$fill_array = array($_POST['username'], $_POST['moviename'], $_POST['ratings']);
$q->execute($fill_array);

答案 3 :(得分:-1)

你忘了点:

$sql="INSERT INTO review (username, movie_name, ratings) 
                 VALUES (".$_POST['username'].",".$_POST['moviename'].",".$_POST['ratings'].")";

现在将来你的变量不会被转义,因此代码不安全

答案 4 :(得分:-1)

SQL语句中的字符串需要',只有整数或浮点数不需要这个。

 $sql="INSERT INTO review (username, movie_name, ratings) VALUES ('".$_POST['username']."','".$_POST['moviename']."','".$_POST['ratings']."')";