Php 将节点id与mysql表id匹配

Php 将节点id与mysql表id匹配,php,mysql,drupal,drupal-7,Php,Mysql,Drupal,Drupal 7,我必须创建一个可以从url获取节点id的函数(示例:localhost/site/node-1),并链接到mysql数据库行,其中是(示例:id=1),我需要使用多个节点动态执行此操作。。我尝试以下代码: <?php function module_name_menu() { $items['node-%'] = array( 'title' => 'Row from database', 'page callback' => 'module_name_n

我必须创建一个可以从url获取节点id的函数(
示例:localhost/site/node-1
),并链接到mysql数据库行,其中是
(示例:id=1)
,我需要使用多个节点动态执行此操作。。我尝试以下代码:

<?php

function module_name_menu() {
  $items['node-%'] = array(
    'title' => 'Row from database',
    'page callback' => 'module_name_node_page_view',
    'access callback' => 'node_access',
  );
  return $items;
}

function module_name_node_page_view(){

        $id = $_GET['id'];
        $results=db_query("SELECT * FROM csvupload WHERE id = $id");

        $header = array ( t('First name'), t('Last name'), t('Email'));
        $rows = array();

  foreach($results as $result){
    $rows[] = array(
      $result -> first_name,
      $result -> last_name,
      $result -> email,

      );
  }

  return theme('table', array('header' => $header, 'rows' => $rows));

}

有几种方法可以获取当前页面节点id,即:

if (arg(0) == 'node') {
  $nid = arg(1);
}

然后,您的格式:

localhost/site/node-1

不是drupal的url格式,而是为您定制的。为此,您可以首先使用:

$_SERVER['REQUEST_URI']
获取自定义路径。然后,由于您的路径只包含一个“-”号,因此可以使用php explode()函数按该号拆分,并从减号中找到字符串部分


此外,使用视图是从数据库获取内容的“更自然的”(“drupalish”)方式,但如果您的任务是特定的,您必须这样做。但如果必须加载节点,那么为什么选择“csvupload”表呢?Drupal的数据库组织比您预期的要复杂一些。并不是所有添加到内容类型的字段都是一个表的一部分。更重要的是,您添加的每个字段都是不同的表,您需要大量的连接才能获得所需的内容。这就是为什么最好使用视图…

有几种方法可以获取当前页面节点id,即:

if (arg(0) == 'node') {
  $nid = arg(1);
}

然后,您的格式:

localhost/site/node-1

不是drupal的url格式,而是为您定制的。为此,您可以首先使用:

$_SERVER['REQUEST_URI']
获取自定义路径。然后,由于您的路径只包含一个“-”号,因此可以使用php explode()函数按该号拆分,并从减号中找到字符串部分


此外,使用视图是从数据库获取内容的“更自然的”(“drupalish”)方式,但如果您的任务是特定的,您必须这样做。但如果必须加载节点,那么为什么选择“csvupload”表呢?Drupal的数据库组织比您预期的要复杂一些。并不是所有添加到内容类型的字段都是一个表的一部分。更重要的是,您添加的每个字段都是不同的表,您需要大量的连接才能获得所需的内容。这就是为什么最好使用视图…

SQL注入警报。对于未发现问题的页面,请检查您是否在Apache中启用了mod_rewrite并在.htaccess文件中正确设置。一个附带的问题是,如果
node-1
是URI的一部分,它将不在
$\u GET
中。您需要解析
$\u SERVER['REQUEST\u URI']
以找出用户请求的节点id。顺便说一句,不需要再问两次相同的问题。SQL注入警报对于未找到的页面问题,请检查您是否在Apache中启用了mod\u rewrite并在.htaccess文件中正确设置。一个附带的问题是,如果
node-1
是URI的一部分,它将不在
$\u GET
中。您需要分析
$\u服务器['REQUEST\u URI']
以找出用户请求的节点id。顺便说一句,不需要再问两次同样的问题。我尝试了
$\u服务器['REQUEST\u URI']
,但仍然不起作用。。你能说得更具体一点吗如果你有什么建议,那会很有帮助的@米浪你说“没用”是什么意思?你写出来了吗?它包含什么字符串?我是drupal的新手,所以我不确定我是否用正确的方法。。代码是:$uri=$\u服务器['REQUEST\u uri'];分解(“-”,$uri)$results=db_查询(“从csvupload中选择*,其中id=$uri”)其余的都一样。。Hvala unapred@MilanGexplode()正在返回结果,而您只是忽略了它。在每个“可疑”行打印出变量后,您必须确保哪一步失败。在此之前,db_query()调用print out$uri的目的是确定它的值是否正确。我尝试了
$\u服务器['REQUEST\u uri']
。。你能说得更具体一点吗如果你有什么建议,那会很有帮助的@米浪你说“没用”是什么意思?你写出来了吗?它包含什么字符串?我是drupal的新手,所以我不确定我是否用正确的方法。。代码是:$uri=$\u服务器['REQUEST\u uri'];分解(“-”,$uri)$results=db_查询(“从csvupload中选择*,其中id=$uri”)其余的都一样。。Hvala unapred@MilanGexplode()正在返回结果,而您只是忽略了它。在每个“可疑”行打印出变量后,您必须确保哪一步失败。在此之前,db_query()调用print out$uri以确定其值是否正确。