我遇到了这个SQL查询的问题。除了lead_date字段外,一切都有效。我收到1064 SQL错误消息。我尝试查找此问题,但无法找出错误代码的含义。代码如下:
$_REQUEST['client_id'] ? $general_id = $_REQUEST['client_id'] : $general_id = mysql_insert_id();
if($_POST['prospect-id']!=''){
$prospect = $obj_db->select("SELECT `created_date` FROM `prospect`");
$c_date1 = ", `created_date`";
$c_date2 = ", {$prospect[0]['created_date']}";
}
$lead_sq = "INSERT INTO `leads` (`created_id`,`general_id`,`title`,`descriptions`,`l_service`,`status`,`appointement_date`,`lead_date` $c_date1) VALUES ('$created_id','$general_id','$title', '$descriptions','$l_service', '$l_status','$appt_date', NOW() $c_date2)";
$lead_sqls = $obj_db->insert($lead_sq);
$leads_id = mysql_insert_id();
$ins_appointement = "INSERT INTO `calendar` (`title`,`description`,`start`,`user_id`) VALUES ('$appttitle', 'Lead Appointement','" . date("Y-m-d H:i:s", strtotime($_REQUEST['appt_date'])) . "','" . $_REQUEST['id'] . "')";
$ins_appointement_sql = $obj_db->insert($ins_appointement);
答案 0 :(得分:3)
我决定将其作为社区维基。随意添加答案,或修改它。
OP下的评论太长了。
让我们从代码的这一部分开始作为您的专栏,缺少逗号(编辑)您在声明中使用它们,这是不推荐的。
`lead_date` $c_date1)
^
就像这样,在你的价值观中
NOW() $c_date2)
^
Shawn在评论中指出:
$prospect[0]['created_date']
可能应该在$c_date2 = ", '{$prospect[0]['created_date']}'";
引用,因为根据$c_date1 = ", created_date";
它会进入创建列_date,这很可能是字符串值
我不知道你为什么要在这些中使用逗号。我有一种感觉,但是......为什么?
$c_date1 = ", `created_date`";
$c_date2 = ", {$prospect[0]['created_date']}";
删除它们并改为使用查询中的逗号。
$c_date1 = "created_date";
$c_date2 = "{$prospect[0]['created_date']}";
在您的对帐单上运行var_dump()
或print_r()
。
您的查询似乎在某处失败,您需要找出原因。
<强> 笨? 强>
您似乎在这里使用CI语法:
$prospect = $obj_db->select("SELECT...
如果你是,那么你需要提供更多的代码。
将error reporting添加到文件的顶部,这有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
旁注:只应在暂存时进行显示错误,而不是生产。
另外,正如所述(Marc在评论中):
您目前的代码向SQL injection开放。使用mysqli
with prepared statements或PDO with prepared statements,他们更安全。
答案 1 :(得分:1)
语法错误:
... `,`lead_date` $c_date1) ...
^--- no comma
... , NOW() $c_date2)";
^---- again no comma
如果这些是尝试别名字段(例如leader_date AS $c_date1
) - 不可能。您不能在insert
查询中使用别名。