Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP变量作为MySQL查询表名_Php_Jquery_Mysql_Ajax_Mysqli - Fatal编程技术网

使用PHP变量作为MySQL查询表名

使用PHP变量作为MySQL查询表名,php,jquery,mysql,ajax,mysqli,Php,Jquery,Mysql,Ajax,Mysqli,在PHP自学,所以如果我犯了任何明显的错误,请原谅我, 我正在尝试动态创建一个手风琴,并从相应的表中创建每个手风琴标题下的相应内容(如果标题是tacos,下面的信息将来自tacos_info表)我提出的一些解决方案我不确定,cheifly在mysqli查询中传递一个变量值作为表名 <?php //initialize list $res = mysqli_query("SELECT * FROM tables

在PHP自学,所以如果我犯了任何明显的错误,请原谅我, 我正在尝试动态创建一个手风琴,并从相应的表中创建每个手风琴标题下的相应内容(如果标题是tacos,下面的信息将来自tacos_info表)我提出的一些解决方案我不确定,cheifly在mysqli查询中传递一个变量值作为表名

     <?php

    //initialize list                            
   $res = mysqli_query("SELECT * FROM tables ORDER BY votes DESC");

    //build the accordion header and div content in descending order

   while($row= mysqli_fetch_assoc($res)){

   //create value for SQL table name to build content

   $dbname='$row['name']';              

   //create the accordion headers

   $accordioncontent= '<h3>'.$row['name'].'</h3>';

   //build the query that will be used to create the accordion content dynamically

    $res2 = mysql_query("SELECT * FROM '$dbname' ORDER BY votes DESC");

    //while loop to build the div content dynamically

        while($row2= mysqli_fetch_assoc($res2)){
    //dynamically create the list items i.e the accordion content

        $ranks= '<li id="li $row2['id']">
                 <div class="tut-img">
                    <img src="<?php echo $row2['img']?>" width="50" height="70" alt="<?php $row['title']?>" />
                 </div>
        <div class="title"><a href="<?php echo $row2['url']?>" target="_blank" title=""><?php $row2['title']?></a>
                 </div>
                 </li>';


   }//close content while loop

  //create the submit button that submits according to each accordion divs content
  $submitbutton='';

 //limit submissions to once per IP, per table
  $voted=false;
  $vcheck= mysqli_query("SELECT 1 FROM sort_votes
                              WHERE ip='".$_SERVER['REMOTE_ADDR']."'
                              AND date_submit=CURDATE()
                              AND Tablename='$dbname' "
                               );

  if(mysqli_num_rows($vcheck)==1)
  $voted=true;

  //conditional to assign either a submit or edit
  if(!$votedIFC){$submitbutton='<a href="" onmousedown="javascript:submitvote('$dbname');" class="button">Enter opinion<span></span></a>'}
  else{$submitbutton='<a href="" onmousedown="javascript:editvote('$dbname');" class="button">Enter opinion<span></span></a>'}

   //concatonate the div header with the div content
    $accordioncontent .= '<div><ul class="sort" id="rank_ul">'$ranks'</ul><div class="button-holder">'$submitbutton'</div></div>';

    }//close accordion while loop

  //send all this data to the AJAX GET request                              
 echo $accordioncontent;

 ?> 

首先,我可以看到您有时以一种奇怪的方式使用简单引号和双引号。您使用哪个IDE进行开发?我的第一个建议是,使用适当的编辑器自动检查代码语法。
例如,这看起来很奇怪(很难准备好,并且在某一点上肯定会产生错误):

  • 在我看来,正确的语法应该是:

    "<li id='li ".$row2['id']."'> .... ";
    
  • 详情如下:

    现在回答您的问题,您似乎更关注将值传递给SQL查询的方式。如果您正在寻找最佳实践,那么我建议您使用php PDO。它是PHP和您的数据库之间的一个层,除其他外,它将确保您正确地将值传递给SQL(减少SQL注入的风险、引号问题等)

    有关PDO的更多详细信息,请参见:

    我最后的建议是:

  • 请在代码缩进方面做出努力,这样对您和其他人来说将更容易阅读和理解,从而避免明显的错误
  • 使用正确的变量名。例如,您在这里使用$dbname来谈论数据库表
  • 祝你好运

    "<li id='li ".$row2['id']."'> .... ";