基本查询语句执行失败


basic query statement fails to execute

$query="INSERT INTO ".$table_name." VALUES ('$rowNum','$something',$_SERVER['REQUEST_TIME'], $_SERVER['REQUEST_TIME'], '$somethingelse')";

产生的错误是

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in line 15

我对那个查询有问题,但我不知道错误在哪里。任何人看到光,请把它洒在我身上。谢谢你的位置。

编辑:用于创建我的表的查询是

$query="CREATE TABLE ".$table_name." (id int not null auto_increment, something varchar(128), post_date varchar(32), edit_date varchar(32), somethingelse text)";

我发现这种语法更容易管理和调试,除了最基本的参数替换为字符串:

$query = sprintf("INSERT INTO %s VALUES ('%s', '%s', '%s', '%s', '%s');", $table_name,                      
                  $rowNum, $something, $_SERVER['REQUEST_TIME'], $_SERVER['REQUEST_TIME'],
                  $somethingelse)

:注:您还可以使用 printf 代替具有相同结构的 sprintf 来输出相同的字符串,就像 print 或 echo 语句一样。

还有其他一些建议:

  1. 使用 PDO 简化和抽象数据库操作,以及更轻松地保护预准备语句中具有绑定参数的所有语句。
  2. 与其使用 $_SERVER['REQUEST_TIME'],也许数据库上一些默认的 'now((' 日期字段和用于mod_dates的触发器会更可靠和可维护。(虽然我没有完整的上下文来知道您是否出于另一个原因显式插入服务器时间,而这些原因无法通过数据库处理的时间戳来处理(

你试过吗

$query="INSERT INTO ".$table_name." VALUES ('$rowNum','$something',".$_SERVER['REQUEST_TIME'].",". $_SERVER['REQUEST_TIME']", '$somethingelse')";

编辑 - 问题出在$_SERVER['REQUEST_TIME'] 上,它不会被 php 解释为$sometext,因此您必须将其连接起来

尝试:

$query="INSERT INTO ".$table_name." VALUES ('$rowNum','$something','".$_SERVER['REQUEST_TIME']."','". $_SERVER['REQUEST_TIME']."', '$somethingelse')";

数组值不应使用单引号或双引号。