2017-08-17 18 views
-1

私のデータベースがフォームフィールドからユーザー名を受け取るかどうかを調べるテストでは、エラーメッセージをエコーし​​ない限りコードは機能しません。どうしてこれなの?私の目標は、フォームフィールドからユーザー名を送信し、フォームフィールドの下の同じページでユーザー名のリストを取得することです。

のユーザー名を表示するためのユーザ名、
PHPはecho文なしでフォームデータを送信しませんか?

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

を提出するための私のhtml:

<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文を削除するまで、このコードは動作します、接続を確認します。

答えて

2

これは単純な例で、index.phpの名前の1ページのみ:生産アプリで

<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); 
?> 

常に挿入のために別のページを書き、そして常にあなたがクエリを実行していないhttp://php.net/manual/en/mysqli.prepare.php

+0

私が必要と使用しています、私はまだする必要がありますフォームフィールドにaction = ''を使用しますか?また、ユーザー名はアクションなしでデータベースに送信されますが、if文を削除すると送信されません。 – Pacified

+0

はい。送信ボタンをクリックすると、私たちがやりたいことをやり遂げることができるページが呼び出されます。 – b2ok

+0

私は空白のページにリダイレクトしたくない、私はちょうどページをリロードし、ユーザ名をリストに表示したい。 – Pacified

1

を準備使用if文以外のどこでも

あなたはまだこれらの関数を呼び出す必要はあり$sql

+0

またはmysqli_query($ conn、$ sql)を使用することをお勧めします。 – Blaise

+0

それはトリックでした!しかし、あなたが見ることができるように、user_nameの内容は表示されませんか? http://chatangu.tk/admin.phpまた、最初の実行では、データベースに2人のブランクユーザーが作成されているようです。 – Pacified

+0

一重引用符を削除してみてください $ mydata = mysqli_query( '$ sql2、$ conn') – Blaise

0

のあなたの宣言の下$mysqli->query($sql)を追加してみてください:

mysqli_select_db($conn,'heroku_cd6b3866e127c21') 

mysqli_query($conn,$sql) 

それらがに包まれている場合でもをif文かdbを選択してクエリを送信する必要があります。しかし、私はこれをやりたいとは思わないでしょう。私はPDOを調べます。

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

これらの方法は、SQLI脆弱性を有するために知られています。

編集

また、この行はエラーがあります:私はそれがあるべきと仮定

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

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

私は脆弱性についてあまり心配する必要はありません。実際のユーザー名ではなく、名前を格納しているだけなので、ユーザーはログインする必要があります。利用可能なアルファベット順。 – Pacified

+0

あなたが大文字で大丈夫かもしれませんが、私のハッカー側のこの行は素敵でジューシーに見えます: $ user_name = $ _POST ['user_name']; $ sql = "INSERT INTOストア(user_name)VALUES( '$ user_name')"; – Asleepace

+0

http://prntscr.com/g9rrj3なぜその空白を生成するのか? – Pacified

関連する問題