Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.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变量中选择SQL表_Php_Mysql_Sql - Fatal编程技术网

从php变量中选择SQL表

从php变量中选择SQL表,php,mysql,sql,Php,Mysql,Sql,我从列表/数组中选择了一个随机表,我希望能够使用mysqli_查询功能调用该随机表,即动态选择一个表 这是我的密码: <?php $mysqli=mysqli_connect(HOST,USERNAME,PASSWORD,DATABASE); // Check connection if (mysqli_connect_errno($mysqli)) { ech

我从列表/数组中选择了一个随机表,我希望能够使用mysqli_查询功能调用该随机表,即动态选择一个表

这是我的密码:

<?php
            $mysqli=mysqli_connect(HOST,USERNAME,PASSWORD,DATABASE);

            // Check connection
            if (mysqli_connect_errno($mysqli))
            {
                echo "Failed to connect to MySQL: " . mysqli_connect_error();
            }

            // Looks at all prodcuts and selects those that have special offers enabled
            // Selects a random table from the array
            $tables_special = ["ajbs_products_console" ,"ajbs_products_console_games", "ajbs_products_pc", "ajbs_products_pc_games", "ajbs_products_pc_parts"];
            $rtable = $tables_special[floor (rand(0,count($tables_special)-1))];
            echo "<p>".$rtable." was selected</p>";


            $products = mysqli_query("SELECT * FROM '".$rtable."'");


            echo "<p>".$products."</p>";
            while($productRow = mysqli_fetch_array($products))
            {
                if ($productRow['product_specials'] == 1)
                {
                    echo "<table>";
                    echo "<tr>";
                    echo "<td rowspan='2'><img src=" . $productRow['product_image'] . "/></td>";
                    echo "</tr>";
                    echo "<table border='1'>";
                    echo "<tr>";
                    echo "<td>Product Name</td>";
                    echo "<td>" . $productRow['product_name'] . "</td>";
                    echo "</tr>";
                    echo "<tr>";
                    echo "<td>Description</td>";
                    echo "<td>" . $productRow['product_description'] . "</td>";
                    echo "</tr>";
                    echo "</table>";
                }
            }

            mysqli_close($mysqli);
        ?>

我不明白为什么这不起作用

谢谢


Bull

不应使用单引号引用表名,而应使用反勾号,单引号使其成为字符串而不是表名

此外,函数mysqli_query接受一个额外的参数,即连接

$products = mysqli_query("SELECT * FROM '".$rtable."'");
应该是,

$products = mysqli_query($mysqli, "SELECT * FROM `".$rtable."`");
试一试


仍然存在错误:选择了ajbs_products_console警告:mysqli_query()至少需要2个参数,1个参数在第103行的/usr/local/www/project/A.J.Bullock/ajbstudios/index.php中给出,所以现在看来这不是问题所在。我认为这与表被定义为数组$tables\u special中的字符串有关,但我不知道这是什么原因certain@Bull更新了答案,行中有两个单独的错误。仍然不起作用,我想我必须找到另一种方法。不过谢谢你的帮助:)我强烈建议你现在就更改密码。
$products = mysqli_query($mysqli, "SELECT * FROM ".$rtable);