"没有结果"尝试从数据库中检索名称时

时间:2014-11-11 18:30:00

标签: php database sql-insert

好的,你可以看到,我做了一个表格。如果我输入姓名并尝试在之后显示它可行,但是当我尝试将其“发布”到数据库并检索它时会出错。它给了我一个“没有结果”。由于我对此很新,我不知道我做错了什么。有人在这看到问题吗?         

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

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


    echo "<form action='' method='post'>
    Naam: <input type='text' name='name'><br>
    Achternaam: <input type='text' name='surname'><br>
    <input type='submit'>
    </form>";

    $name = $_POST["name"];
    $surname = $_POST["surname"];

    //insert name
    $sql = "INSERT INTO Namen
    VALUES ($name, $surname)";
    $result = $conn->query($sql);


    if(!$result){
     echo "fout ".mysql_error();   

    }

    $sql = "SELECT Voornaam, Achternaam FROM Namen";
    $result = $conn->query($sql);

    echo "<table border='1px'>";
    echo "<th>Naam</th>";
    echo "<th>Achternaam</th>";
    if ($result->num_rows > 0) {
        // output data of each row
        while($row = $result->fetch_assoc()) {
            echo "<tr><td>" .$row["Voornaam"] . "</td>";
            echo "<td>" . $row["Achternaam"] . "</td></tr>";
        }
    } else {
        echo "0 results";
    }
    echo "</table>";
    $conn->close();
    ?>

1 个答案:

答案 0 :(得分:1)

你的价值观&#39;变量VALUES ($name, $surname)必须封装在引号内,因为我们(很可能)处理字符串。

将其更改为VALUES ('$name', '$surname')

您还要混合(他们不要混合)与echo "fout ".mysql_error();的MySQL API,需要将其更改为echo "fout ".mysqli_error($conn);,以便为您提供发现实际错误。

此外,您目前的代码向SQL injection开放 使用prepared statementsPDO with prepared statements他们更安全


您还应该考虑根据命名的提交按钮在条件语句中包装代码(或您要执行的代码)。

即:

<input type='submit' name='submit' value='Submit'>

然后做

if(isset($_POST['submit'])){...}

{...}是您的初始查询,和/或PHP / SQL代码的整个(的一部分)。