【问题标题】:PHP mysqli_fetch_assoc() Function returning NULL while the same PHP file worksPHP mysqli_fetch_assoc() 函数在同一个 PHP 文件工作时返回 NULL
【发布时间】:2019-04-26 15:54:02
【问题描述】:

我已经花了一天时间,但我无法解决以下问题。 我有这个代码来访问我的数据库,我想得到一些值。 奇怪的是,相同的代码适用于同一目录中同一服务器上的同一 php 文件。 我想用不同的 sql 选择创建一个新的 php 文件,但是这个总是返回 null 而不是 json 数组。

任何有用的建议都会很棒! 我正在运行一个 wordpress 网站,也许这是一个重要的信息。

<?php
if( isset( $_POST[user_id] ) )
{
    $user_id = $_POST[user_id];

    $servername = "****";
    $username = "****";
    $password = "****";
    $dbname = "****";

    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);

    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    } 
    //echo "Connected successfully";
    //echo $user_id;


    $sql = "SELECT *
    FROM felderkonfig
    WHERE felderkonfig_user_id = '$user_id' ";

    $result = mysqli_query($conn, $sql);    //sql abfrage in array speichern
    $myArray = array();
    $myArray =mysqli_fetch_assoc($result);  //umwandeln in assoziatives array

    echo json_encode($myArray);     //echo als json array


    $conn->close();
    exit(); 
}else{
    echo "Fehler bei if isset";     
}
?>

【问题讨论】:

  • 对于初学者来说,$user_id 不应包含在单个撇号中。它会让它在字符串中以这种方式使用。
  • 您的查询容易受到 SQL 注入。你应该了解prepared statements。现在对于您遇到的错误,它要么意味着您的查询有错误(但您应该看到一个 PHP 警告,因为 $result 为假),或者它不返回任何行。
  • 建议你var_dump你查询,然后在你的数据库环境中执行,检查你是否有结果。
  • 大家好。非常感谢您的快速回复。我已经尝试过不同的查询。也直接在我的数据库中,它们工作正常。正如我上面提到的,完全相同的代码和查询工作正常,这让我很困惑。
  • 您是否也收到Fehler bei if isset 消息?

标签: php mysql json mysqli null


【解决方案1】:

您应该将此文件包含到首选的 php 文件中,就像您想要连接数据库的位置一样

<?php include 'connect.php' ?>

在connect.php文件中应该有你在排除selct查询的问题中提到的连接设置

【讨论】:

  • 嗨。感谢您的建议,但如果我这样做有什么好处?
【解决方案2】:

我不知道为什么,但代码工作知道。行为很奇怪,也许有一些服务器端问题,但我不知道。如果有人能告诉我如何使以下代码更安全,那就太好了。非常感谢。

<?php
if( isset( $_POST[virtuellesdepot_id] ) )
{
    $virtuellesdepot_id = $_POST[virtuellesdepot_id];

    $servername = "****";
    $username = "****";
    $password = "****";
    $dbname = "****";

    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);

    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    } 
    //echo "Connected successfully";

    //echo $user_id;


    $sql = "SELECT * FROM virtuelledepots ";   

    $result = mysqli_query($conn, $sql);    //sql abfrage in array speichern
    $myArray = array();
    $myArray = mysqli_fetch_assoc($result); //umwandeln in assoziatives array


    echo json_encode($myArray);     //echo als json array


    $conn->close();
    exit(); 
}else{
    echo "Fehler bei if isset"; 
}
?>

【讨论】:

  • 你的 $sql 肯定和第一个不一样。
  • 我知道。但是现在的 sql 要大得多,而且完全不同。不是sql语句的问题。
猜你喜欢
  • 2019-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-15
  • 1970-01-01
  • 2018-08-26
  • 2010-09-28
  • 1970-01-01
相关资源
最近更新 更多