我使用了这段代码
<?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
答案 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语句。
答案 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']."')";