SQL查询无法正常运行

时间:2015-07-23 18:30:45

标签: php sql mysqli

我遇到了这个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);

2 个答案:

答案 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 statementsPDO with prepared statements他们更安全

答案 1 :(得分:1)

语法错误:

... `,`lead_date` $c_date1)  ...
                 ^--- no comma

... , NOW() $c_date2)";
           ^---- again no comma

如果这些是尝试别名字段(例如leader_date AS $c_date1) - 不可能。您不能在insert查询中使用别名。