基本查询语句无法执行

时间:2012-02-03 09:30:55

标签: php mysql

$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)";

3 个答案:

答案 0 :(得分:1)

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

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

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

其他一些建议:

  1. 使用PDO简化和抽象数据库操作,并使用预准备语句中的绑定参数更容易保护所有语句。
  2. 而不是使用$ _SERVER ['REQUEST_TIME']或许某些默认的'now()'日期字段和数据库上mod_dates的触发器将更可靠和可维护。 (虽然我没有完整的上下文来知道你是否明确地插入服务器时间是因为DB处理的时间戳无法处理的另一个原因)

答案 1 :(得分:0)

你试过吗

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

编辑 - 问题出现在$_SERVER['REQUEST_TIME'],而PHP没有将其解释为$sometext,所以你必须将它连接起来

答案 2 :(得分:0)

尝试:

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

数组值不应该是单引号或双引号。