Php 非常简单的MySQL查询不起作用

Php 非常简单的MySQL查询不起作用,php,mysql,Php,Mysql,我正在尝试执行以下操作: $result = mysql_query("INSERT INTO timesheet (project_no,user,cust_name,notes,duration) VALUES("'".$_POST['project']."', '".$_POST['user']."', '".$_POST['cust']."', '".$_POST['notes']."', '".$_POST['duration']."'")") or die(mysql_error()

我正在尝试执行以下操作:

$result = mysql_query("INSERT INTO timesheet (project_no,user,cust_name,notes,duration) VALUES("'".$_POST['project']."', '".$_POST['user']."', '".$_POST['cust']."', '".$_POST['notes']."', '".$_POST['duration']."'")") or die(mysql_error());

我知道SQL注入。但是现在,任何人都能发现撇号、语音标记等问题吗?

使用准备好的语句

使用准备好的语句

我认为双引号和结束撇号是问题所在。试试这个:

$result = mysql_query("INSERT INTO timesheet (project_no,user,cust_name,notes,duration) VALUES('".$_POST['project']."', '".$_POST['user']."', '".$_POST['cust']."', '".$_POST['notes']."', '".$_POST['duration']."')") or die(mysql_error());

我认为双引号和结尾撇号是个问题。试试这个:

$result = mysql_query("INSERT INTO timesheet (project_no,user,cust_name,notes,duration) VALUES('".$_POST['project']."', '".$_POST['user']."', '".$_POST['cust']."', '".$_POST['notes']."', '".$_POST['duration']."')") or die(mysql_error());

撇号不正确

$result = mysql_query("INSERT INTO timesheet (project_no,user,cust_name,notes,duration) VALUES('".$_POST['project']."', '".$_POST['user']."', '".$_POST['cust']."', '".$_POST['notes']."', '".$_POST['duration']."')") or die(mysql_error());

错误出现在“values”的开头和查询字符串内的右括号中。使用带有语法高亮显示的编辑器,这已经显示了问题所在

撇号不正确

$result = mysql_query("INSERT INTO timesheet (project_no,user,cust_name,notes,duration) VALUES('".$_POST['project']."', '".$_POST['user']."', '".$_POST['cust']."', '".$_POST['notes']."', '".$_POST['duration']."')") or die(mysql_error());

错误出现在“values”的开头和查询字符串内的右括号中。使用带有语法高亮显示的编辑器,这已经显示了问题所在

用点连接的字符串和变量部分填充的无休止的行是太多PHP程序员最可怕的习惯之一。帮你未来的忙,写可读的代码。按照这个例子(忽略它的所有其他问题)使用其他变量来保存值(在现实世界中,您无论如何都需要这些变量,因为您不打算直接使用
$\u POST
我希望如此),并编写如下内容:

$sql = "INSERT INTO timesheet (project_no,user,cust_name,notes,duration)
        VALUES('$project', '$user', '$cust', '$notes', '$duration')";

$result = mysql_query($sql) or die(mysql_error());

没有更多的引用打开/关闭疯狂,没有更多239个字符的行,更具可读性和可维护性。

无休止的行中填充了部分字符串和用点连接的变量,这是太多PHP程序员最可怕的习惯之一。帮你未来的忙,写可读的代码。按照这个例子(忽略它的所有其他问题)使用其他变量来保存值(在现实世界中,您无论如何都需要这些变量,因为您不打算直接使用
$\u POST
我希望如此),并编写如下内容:

$sql = "INSERT INTO timesheet (project_no,user,cust_name,notes,duration)
        VALUES('$project', '$user', '$cust', '$notes', '$duration')";

$result = mysql_query($sql) or die(mysql_error());

没有更多的引用打开/关闭疯狂,没有更多的239个字符行,更具可读性和可维护性。

您是否考虑过尝试一个IDE来突出这一点?有几个免费的选项在那里…是的,我使用记事本++,它是突出显示,但我努力寻找撇号造成的麻烦!你有没有考虑过尝试一个IDE来突出这一点?有几个免费的选项在那里…是的,我使用记事本++,它是突出显示,但我努力寻找撇号造成的麻烦!我喜欢JEdit处理小事情,喜欢Netbeans作为IDE。我认为在Notepad++中,字符串默认标记为灰色?也许这就是为什么很难识别。我喜欢这种颜色更鲜艳,但这只是我个人的口味;)@肯普这是关于找到丢失的撇号,而不是关于清理整个代码。当然,你的解决方案更干净。我喜欢JEdit处理小事情,喜欢Netbeans作为IDE。我认为在Notepad++中,字符串默认标记为灰色?也许这就是为什么很难识别。我喜欢这种颜色更鲜艳,但这只是我个人的口味;)@肯普这是关于找到丢失的撇号,而不是关于清理整个代码。当然,你的解决方案更干净。