mysqli查询不返回任何结果或错误的PHP代码

时间:2013-04-19 13:47:21

标签: php mysqli

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

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

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";

3 个答案:

答案 0 :(得分:3)

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

您将作业=与比较==

混淆

您应该尝试:

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

答案 1 :(得分: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';
    }
    

答案 2 :(得分:-1)

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

echo mysqli_error($link);

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