0

我正在drupal 7中开发一个自定义模块,就像注册表一样,所有东西都正常工作,但我无法在我的db_table中插入记录。我在 drupal 7 中使用以下代码

function reg_fields_form_submit($form,&$form_state){
    $name = trim($form_state['values']['name']);
    $phone = trim($form_state['values']['phone']);
    $email = trim($form_state['values']['email']);
    $query = "INSERT INTO {registration} (name,phone,email) VALUES ('%s', '%s', '%s')";
    $result = db_query($query, array($name, $phone, $email));
if ($result !== FALSE){
    drupal_set_message('data saved successfully.');}

但是在我的表中插入的值就像 %S,%S,%S 一样每次如何解决这个问题。而且我想在同一页面中显示插入的值。任何人帮助我

4

2 回答 2

1

Drupal 7 使用了新的数据库 API,其中包含db_insert()强烈建议使用的函数来代替db_query("INSERT")

在您的情况下,您的代码将变为

function reg_fields_form_submit($form,&$form_state){
    $name = trim($form_state['values']['name']);
    $phone = trim($form_state['values']['phone']);
    $email = trim($form_state['values']['email']);
    $result = db_insert('registration')
    ->fields(array(
        name => $name,
        phone => $phone,
        email => $email,
    ))
    ->execute();
    if ($result){
        drupal_set_message('data saved successfully.');}
于 2016-03-07T15:58:17.953 回答
-1

看起来像drupal 7使用?对于未命名的占位符。所以用?而不是 %s 或使用命名占位符。db_query

建议使用db_insert进行插入操作。

于 2013-03-22T04:43:29.447 回答