PHP:如何在sql查询(PDO)中使用字符串变量作为表

时间:2017-04-26 14:25:24

标签: php mysql sql function pdo

我想创建一个通用函数来选择不同表的最后插入的id。

我已经尝试过多种方法,这可能是最好的努力(在db.inc.php中);

<?php
define( 'DB_HOST', 'localhost' );
define( 'DB_NAME', 'modlar' );
define( 'DB_USER', 'root' );
define( 'DB_PASS', 'password' );

function verbinden(){
  $verbinding = 'mysql:host=' . DB_HOST . ';DB_NAME=' . DB_NAME;
  $db = null;

  try{
    return new PDO( $verbinding, DB_USER, DB_PASS );
  }catch( PDOException $e ){
    return NULL;
  }
}

function loopdoor( $naam, $ding){
  $regels = '';
  if( is_array($ding) || is_object($ding)):
    $wat = (is_array($ding)? 'array' : 'object');
    $regels .= '<strong>'.$naam.'['.$wat.']</strong><ul>';
    foreach( $ding as $k => $v):
      $regels .= loopdoor( $k, $v);
    endforeach;
    $regels .= '</ul>';
  else:
    $regels .= '<li><strong>'.$naam.'</strong> => '.$ding.'</li>';
  endif;
  return $regels;
}

function last_id( &$db , $table, $column){
  if( is_null( $db ) ) return array();

  $sql = "
    SELECT
      max(modlar.table.column)
    FROM
      modlar.table";

  $vraag = $db->prepare( $sql );
  $vraag->bindValue( ':table', $table, PDO::PARAM_STR );
  $vraag->bindValue( ':column', $column, PDO::PARAM_STR );
  $vraag->execute();
  return $vraag->fetchAll( PDO::FETCH_OBJ );
}

模块是我的数据库。和我的变量(在db.php中);

<?php
require_once 'db.inc.php';

// Verbinden met database
$db = verbinden();
if( is_null($db))
  die('<h1>Error</h1>');

echo 'done';

$table = 'time';
$column = 'time_id';
$last = last_id($db, $table, $column);
echo '<ul>'.loopdoor('all data', $last).'</ul>';
?>

但是我的屏幕上没有任何数据(没有错误)。但是,当我将变量直接添加到代码中时,我将获得该表的最后一个id。所以喜欢;

  $sql = "
    SELECT
      max(modlar.time.time_id)
    FROM
      modlar.time";

出了什么问题?

0 个答案:

没有答案