概要 私はPHPで新しいので、私に同行しています。それが私の顔に当たった場合、私はそれを知らないかもしれませんが、私はここで答えを見つけるように見えることはできません。複数のチェックボックス選択値をSQLテーブルの別々の列に配置するにはどうすればよいですか?
私はKnowladgebaseシステムを構築しています。新しいKB記事をデータベースに挿入するフォームがあります。新しいKBが複数のチェックボックスを使用して適用するカテゴリをユーザーが選択できるようにします。
私はこのために2つの関連するテーブルを持っている - 最初は、カテゴリのリストです カテゴリあり、秒はKB記事が、各カテゴリに関連付けられているの記録を保持します category_kb_membersです。表は 'idcategories' と「名前です<div id="kbform">
<?php echo $error ?>
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">
Title/Description: <input type="text" name="title" maxlength="255" placeholder="Please enter a Title/Description" required/><br />
KB Type:
<select name="type">
<option value="Fault" selected="selected" maxlength="20">Fault</option>
<option value="Guide" maxlength="20">Guide</option>
</select>
<br />
<br />
Please select any categories that this KB matches:
<div class="form-group">
<?php
require "admin/connection.php";
$query = mysqli_query($dbc,"SELECT * FROM categories");
while($row = mysqli_fetch_array($query))
{
echo "<input type='checkbox' name='category' value=".$row['name'].">".$row['name']." | ";
}
mysqli_close($dbc);
?>
</div>
<br />
<p>Enter you KB Info. HTML is supported.<textarea name="article" rows="10" cols="40" required placeholder="Describe the fault, any errors, relevent environmental factors and the steps took to resolve. Try to add as much useful information as possible."></textarea></p>
<p>Entered By: <?php echo $_SESSION['username'] ?></p>
<input type="submit" name="submit" value="Submit" />
</form>
</div>
列をカテゴリで:埋め込ま
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (isset($_POST['title']) && isset($_POST['type']) && isset($_POST['category']) && isset($_POST['article'])){
$title = mysqli_real_escape_string($dbc,$_POST['title']);
$type = mysqli_real_escape_string($dbc,$_POST['type']);
$category = mysqli_real_escape_string($dbc,$_POST['category']);
$article = mysqli_real_escape_string($dbc,$_POST['article']);
$now = gmdate(DATE_RFC822);
$mod = "Never";
$author = $_SESSION['username'];
// Insert into article database
$q1 = $dbc->prepare("INSERT INTO articles (title, type, author, createdate, moddate, article) VALUES (?, ?, ?, ?, ?, ?)");
$q1->bind_param("ssssss", $title, $type, $author, $now, $mod, $article);
$q1->execute();
$q1->close();
//Query the KB Number and store in variable
$kbnumber = mysqli_query($dbc, "SELECT idarticles FROM articles WHERE createdate = '$now'");
//Get Categories as array and insert KB id's into relevent columns.
$query = mysqli_query($dbc,"SELECT * FROM categories");
while($row = mysqli_fetch_assoc($query))
{
mysqli_query($dbc,"INSERT INTO category_kb_members (".$row['name'].") VALUES ($kbnumber)");
}
}else{$error = "Isset is false";
}
}else{$error = "Request methos is false";
}
mysqli_close($dbc);
そしてPHPのビットと私のHTML:ここ
は、これまでのところ、私のPHPコードです' 2番目の表の列は 'idcategory_kn_members'、次に 'category1'と 'category2'などが追加されます。私が現在取得中のエラーは「PHP回復可能な致命的なエラーです:クラスmysqli_resultのオブジェクトを文字列に変換できませんでした」です。これを達成する方法が残っています。私は列ごとではなく行ごとにこれを行うための記事を見つけました。
ご迷惑をおかけして申し訳ございません。
$kbnumber = mysqli_query($dbc, "SELECT idarticles FROM articles WHERE createdate = '$now'");
から最初の文字列として、あなたの結果を得る:私はあなたの質問になりますすべての悪いコーディング慣行を無視して
うーんを照会するのではなく、あなたの次のクエリで
$kbnumberString
を使用各行のdbがサーバーに負荷をかけている可能性があります。また、 '$ kbnumber = mysqli_query($ dbc、" WHERE createdate = '$ now' "という記事からSELECT idarticlesを参照してください);は文字列ではありません – mrahmat