PHP没有echo语句提交表单数据?

时间:2017-08-17 18:57:07

标签: php html sql heroku cleardb

在测试期间,看看我的数据库是否会通过表单字段接收用户名,除非我回复出错误消息,否则代码将无效。为什么是这样?我的目标是通过表单字段发送用户名,并在表单字段下面的同一页面上检索用户名列表。

我提交用户名的HTML,

    <section id="banner">
    <div class="content">
    <header>
        <h2>Add Usernames Here</h2>
        <form method="post">
        <br><input type="text" name="user_name"><br>
        <input type="submit" value="Submit"> 
        </form>
    </header>
    </div>

用于显示用户名:

<section id="five" class="wrapper style2 special fade">
<div class="container">
<header>
<h2>Added Usernames</h2>
<?php require 'post.php'; ?>                            
</header>
</div>
</section>

我的post.php代码

<?php
//connection
$url = parse_url(getenv("CLEARDB_DATABASE_URL"));
$server = $url["host"];
$username = $url["user"];
$password = $url["pass"];
$db = substr($url["path"], 1);
$conn = new mysqli($server, $username, $password, $db);
//test connection
    if(!$conn)
    {
        echo 'not connected';
    }

    if(!mysqli_select_db($conn,'heroku_cd6b3866e127c21'))
    {
        echo 'database not selected';
    }
//insert username    
    $user_name = $_POST['user_name'];
    $sql = "INSERT INTO store (user_name) VALUES ('$user_name')";

//test query    
    if(!mysqli_query($conn,$sql))
    {
        echo 'not inserted';
    }
    else {
        echo 'inserted';
    }

//echo all usernames    
mysqli_select_db($db,$conn);
$sql2 = "SELECT * FROM  store";

$mydata = mysqli_query('$sql2,$conn');

while($record = mysqli_fetch_array($mydata)){
    echo "<br>";
    echo  $record['user_name'];
}
?>

此代码有效,直到我删除if语句,检查连接。

3 个答案:

答案 0 :(得分:2)

这是一个简单的例子,只有一个名为index.php的页面:

<form action="index.php" method="post">
    <br><input type="text" name="user_name">
    <br><input type="submit" value="Submit"> 
</form>

<?php
$username = $_POST["user_name"];
$link = mysqli_connect("127.0.0.1", "root", "", "db12");
mysqli_query($link, "INSERT INTO users (username) values ('$username')");


echo $username; 

$query = "SELECT username FROM users";

$result = mysqli_query($link, $query);
    /* fetch associative array */
    while ($row = mysqli_fetch_array($result)) {
        echo $row['username'] . "<br>";
    }


/* close connection */
mysqli_close($link);
?>

在制作应用中,请始终为插入编写单独的页面,并始终使用prepare http://php.net/manual/en/mysqli.prepare.php

答案 1 :(得分:1)

除了那些if语句之外,您没有在其他任何地方运行查询。

尝试在$mysqli->query($sql)

声明下添加$sql

答案 2 :(得分:0)

您仍然需要调用这些函数:

mysqli_select_db($conn,'heroku_cd6b3866e127c21')

mysqli_query($conn,$sql)

即使它们包含在if语句中,您仍然需要选择数据库并向其发送查询。但我不想这样做,我会调查PDO。

http://php.net/manual/en/book.pdo.php

众所周知,这些方法存在SQLi漏洞。

<强> 修改

此行也有错误:

$mydata = mysqli_query('$sql2,$conn');

我认为它应该是:

$mydata = mysqli_query($conn,$sql2);