我有这段代码
<?php
$con = mysql_connect("localhost","root","password");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("tables", $con);
$sql="INSERT INTO customer (Name, Telephone, Email, Address, PostCode, Specialisation )
VALUES
($_POST['firstname'], $_POST['telephone'],$_POST['email'], $_POST['address'],$_POST['postcode'],$_POST['special'])";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "Inserted into Worker database";
mysql_close($con);
?>
我不断收到此错误 - 解析错误:语法错误,意外的 T_ENCAPSED_AND_WHITESPACE,需要 T_STRING 或 T_VARIABLE 或 T_NUM_STRING。
我不知道还能做什么。请帮忙。谢谢
最佳答案
你有几个问题。
首先,您要插入数据库的字符串值需要用单引号括起来。
其次,字符串中的数组变量需要用 {} 包装(即 $string = "Something something {$_POST['variable']}...";
以帮助 PHP 解析器弄清楚它们。
第三,此代码(一旦运行)极易受到通过 SQL 注入(inject)的黑客攻击。考虑使用 PDO 和准备好的语句(因为 mysql_*
函数已被弃用),或者至少通过 mysql_real_escape_string()
运行用户输入。
$sql="INSERT INTO customer (Name, Telephone, Email, Address, PostCode, Specialisation) VALUES ('" . mysql_real_escape_string($_POST['firstname']) . "', '" . mysql_real_escape_string($_POST['telephone']) . "', '" . mysql_real_escape_string($_POST['email']) . "', '" . mysql_real_escape_string($_POST['address']) . "', '" . mysql_real_escape_string($_POST['postcode']) . "', '" . mysql_real_escape_string($_POST['special']) . "')";
第四,你真的不应该使用数据库的 root
用户来连接。
关于PHP,数据库问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9997790/