此查询中存在奇怪的问题。它没有插入特定值

时间:2013-03-28 09:06:45

标签: php mysql drupal

我有一个插入过程。我的开发是在 Drupal6 下。所以我使用以下方法插入数据库表。

$sid = $user->sid;
$data   = array(
            'nid'           =>  $parent_nid,
            'vid'           =>  $parent_vid,
            'uid'           =>  $user_id,
            'time_start'    =>  time(),
            'session_id'    =>  $sid
);

drupal_write_record('quiz_node_results', $data);

问题在于,它没有插入值$sid。它始终在该字段中插入默认值0。但是正确插入了其他值。但它有价值。我通过print_r($data)检查了一下。

在数据库表中,session_id字段的数据类型为varchar

为了快速修复,我编写了实际的插入查询并插入其中。该查询如下。

$sql    =   "INSERT INTO {quiz_node_results}(nid, vid, uid, time_start, session_id) VALUES(".$parent_nid.",".$parent_vid.",".$user_id.",".time().", '".$sid."')";
db_query($sql);

工作正常并正确插入值。但我不想以这种方式插入,因为它很脆弱。

我想知道为什么上面的那个不起作用。任何人都可以建议我哪里出错了吗?

1 个答案:

答案 0 :(得分:0)

我非常确定从第1行改变第1行:

$sid = $user->sid;

到此:

$sid = isset($user->sid) ? $user->sid : session_id();

应该做的伎俩...