2011-08-11 48 views
0

我都尝试我在做什么错误插入?

$query = "INSERT INTO reservation VALUES ('".$hour."','".$minute."','".$day."','".$month."','".$year."','".$name."','".$table."')"; 

$query = "INSERT INTO reservation VALUES ('$hour','$minute','$day','$month','$year','$name','$table')"; 

但他们没有工作,我在错误日志得到一个空白页,并没有错误。我试着对所有的变量做回声,并得到它们的值。

这里是整体功能:

function makeReservation($trtime,$hour,$minute,$day,$month,$year,$name,$table,&$db) 
{ 
//$query = "INSERT INTO reservation VALUES ('".$hour."','".$minute."','".$day."','".$month."','".$year."','".$name."','".$table."')"; 
$query = "INSERT INTO reservation VALUES ('$hour','$minute','$day','$month','$year','$name','$table')"; 
$result = $db->query($query) or die(mysql_error()); 
} 
+4

您是否在将这些变量放入查询之前转义这些变量?是否有任何值包含单引号?这是这张表的确切列数,和正确的顺序?你有没有尝试打印'$ query'并直接在数据库上运行它? –

+0

MySQL中有一种DATETIME类型,它可以真正简化您的查询。在主题上,如果它没有返回任何错误,至少要确保你正在处理好数据库。 –

+1

为什么你有小时,分钟,日,月和年的列,而不是一个'DATETIME'类型的列? –

回答

0

我提出几点建议。首先,当你说没有错误时,我会假设你确实知道你在做什么。

1)确保你在良好的数据库上工作。您可以执行SHOW TABLES查询以查看其包含的表格,或者查看以查看其内容。
2)在插入行之后,执行SELECT * FROM reservation查询并检查您的行是否存在。
3)确保你打电话的功能...

然后,我在评论说,你应该使用DATETIME类型,而不是使用不同的列时,分,等等。如果你需要选择一个特定的属性,请使用相应的函数(例如,SELECT HOUR(your_column)
整数周围的引号不应使查询失败,但对于干净的代码目的,如果不是必要的话,它们会更好(如果不需要,请确保您正确地转义数据,当然)。

+0

感谢您提供有用的提示!我仍然对PHP/MySQL不熟悉,所以我不知道我的方式很多:D – patokun

0

您发布的PHP看起来不错。

如果你得到一个空白页面,那么在函数调用之前很有可能失败。也许解析错误?

如果您在错误日志中没有看到任何内容,请尝试更改php.ini中的错误日志记录设置。

display_errors = E_ALL

如果你在共享主机,你可以经常使用覆盖的.htaccess http://davidwalsh.name/php-values-htaccess

+0

仍然没有错误:( – patokun

+0

如果你更新了PHP .ini,它可能需要重新启动你的web服务器。出于好奇,如果你'error_log(mysql_error())' –

+0

会发生什么?echo $ query;'试图直接在数据库上运行它? –