1

我有一个数据输入 php 代码。我允许用户选择要在单独页面上显示的表格以便于访问。我可以获得将所选表插入“maintable”表的代码,但我无法从该表中获取任何信息。即使在同一页面上我正在插入该数据库,插入表文件甚至都不会从中获取当前表名。所以我想如果我能解决这个问题,我也可以解决那个问题。maintable 表在我的其他数据库之一中只有一列和一条记录。我这样做是为了让用户无法直接访问它,因为他们可以看到不同数据库中的所有其他表。

data-entry-header.php 文件有我的连接语句,$connect 是我用于此数据库连接的语句。结果是我的 main-form.php 文件没有表名。所以它没有抛出任何错误,只是没有得到表名。我知道我的连接语句和表/列名称是正确的,因为我在插入语句中使用了相同的名称。

include 'data-entry-header.php';
    $keys = array();

    /* Query for Main Table Value */
    $string = 'SELECT TableName FROM maintable';
    $resultMain = mysqli_query($connect, $string) or die(mysqli_error($link));
    while ($rowMain = mysqli_fetch_row($resultMain)){
        $table = $rowMain[0];
    }

    /* Display Message or Table */
    if ($table = NULL || $table = "" ){
        echo 'No Main Table has been set. Go to the <a href="set-main-table.php">Set Main Table</a> page to select a Main Table.';
    }
    else {
        include 'main-form.php';
    }

    /* Get footer Contents */
    include "../footer.php";
4

3 回答 3

3
if ($table = NULL || $table = "" ){

您将分配=与比较混淆了==

您可能应该尝试:

if ($table == NULL || $table == "" ){
于 2013-04-19T13:49:01.943 回答
1

您的代码还有许多其他错误。

  • 取而代之的是die(),您必须使用更方便的trigger_error();方式,它不会向任何人透露敏感信息。
  • 如果您只期望一个结果,那么循环没有意义
  • PHP 是一种松散类型的语言。不需要过多的条件。大多数情况下就if($table)足够了
  • 使用有意义(且一致)的变量名也有很大帮助

    $sql = 'SELECT TableName FROM maintable';
    $res = mysqli_query($connect, $sql) or trigger_error(mysqli_error($connect));
    //                                            $connect, not $link ^
    $row = mysqli_fetch_row($res);
    
    /* Display Message or Table */
    if (!$row){
        echo 'No Main Table has been set. Go to the <a href="set-main-table.php">Set Main Table</a> page to select a Main Table.';
    } else {
        $table = $row[0];
        include 'main-form.php';
    }
    
于 2013-04-19T14:16:18.533 回答
-1

而不是或死,只需在下面添加

echo mysqli_error($link);

另外,在您的查询中,不是columnName FROM table吗?

于 2013-04-19T13:58:42.023 回答