こんにちは私はコメントボックスに投稿するコードを得るために関連する変更を行ったと思いますが、まだ何も投稿していないようです。コードに残っているエラーは誰でも見ることができますか?ユーザー名を使用して、コメントボックスにデータを入力することができません。
<form action="" method="post" >
<textarea rows="4" cols="50" name="comment">
Please type a comment if you are logged in....
</textarea>
<input type="submit" value="Submit">
</form>
<?php
if (isset($_SESSION['username']) && !empty($_SESSION['username'])) {
$username = $_SESSION['username'];
$sqlinsert = "INSERT INTO comment (username, comment, dCpuID) VALUES ('$username', '$comment', '1')";
if(mysqli_query($conn, $sqlinsert)){
header("Location: i5-6600k");
} else {
echo "ERROR: Could not able to execute $sqlinsert. " . mysqli_error($conn);
}
}
この文書の一番上にはセッションが開始されているので、それが含まれています。コード全体がPHPタグ内にあります。
if (isset($_SESSION['username']) && !empty($_SESSION['username'])) {
これをlogin_userに変更しました。今ではDB接続のようですが、コメントボックスの上にコメントを表示しなくてもエラーが表示されます: エラー:INSERT INTOコメント(ユーザー名、コメント、dCpuID)を実行できませんでしたVALUES( 'dan' ''、 '1')。 'フィールドリスト'に 'username'という列がありません
$sql = "SELECT `users`.`username`, `comment`.`comment`, `comment`.`timestamp`\n"
. "FROM `users`\n"
. "LEFT JOIN `comment` ON `users`.`userID` = `comment`.`userID` \n"
. "where dCpuID = 1";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo "<table><tr><th>Username</th><th>Comment</th><th>Timestamp</th>";
// output data of each row
while($row = $result->fetch_assoc()) {
echo "<tr><td>" . $row["username"]. "</td><td>" . $row["comment"]."</td><td>" . $row["timestamp"]. "</td>";
}
echo "</table>";
} else {
echo "0 results";
}
上記のコードは、コメントボックスを必要に応じて表示しています。これは、入力されたdisplyedされる(それが表にあるよう多くの意味があります)の代わりに、ユーザー名のユーザーID
それが表示されます:
ERROR: Could not able to execute INSERT INTO comment (userID, comment, dCpuID) VALUES ('dan', '', '1'). Cannot add or update a child row: a foreign key constraint fails (`u803621131_login`.`comment`, CONSTRAINT `comment_ibfk_2` FOREIGN KEY (`userID`) REFERENCES `users` (`userID`))
通常どの何とか固定する、テーブルを削除する手段を修正します私はそれらを再投入しなければならないので、より多くの問題を引き起こします。
あなたが試したこととそれがどうなっているかを示してくださいあなたに間違っている。このサイトはコードを書くのではなく、特定の質問に答えるためのサイトです。 – miken32
私はユーザがログインしていると仮定し、その効果のために何かを '$ _SESSION'に保存したと仮定します。 (a)_そこに何を保管していますか? (b)ユーザがログインしている場合、なぜすべての行にユーザ名を表示したいのですか?(c)ユーザにフィルタをSQLに組み込んだことがありますか? – Manngo
SQL文を提案する:(a)名前が正常で、正常に動作している場合は、表や列の名前の前後にバックティックが必要ない。キーワードや空白を含む名前のような厄介な名前の周りにそれらが必要なだけです。 (b)PHPは、複数行の文字列を分割する必要はありません。文字列の途中に改行があれば、その文字列の一部になります。一方、JavaScriptでは、伝統的な文字列で必要となりますが、これはJavaScriptではありません。 – Manngo