PHP,数据库问题

标签 php mysql html post

我有这段代码

<?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/

相关文章:

mysql - 查询 MySQL 数据库中的用户名及其电子邮件地址

html - CSS 过渡在 IE 中不起作用

php - 拉维尔 5 : uploading an image to send in an email

php - 带有子表单的 Symfony 表单

sql - 在 MySql 中对 UNION 结果求和的简单方法

html - 创建具有两种不同颜色的页脚

javascript - 如何将对象移动到一条线上并删除旧对象,这样它就不会在 HTML5 Canvas 中留下尾部?

php - 菜单和子菜单的Mysql连接表

提交未定义值的 PHP 表单

mysql - 使用 MySQL 将 2 列子查询转换为 1 列子查询