に存在する場合、私は、私は最近、多くの問題を投稿し知っているが、私は約1週間を解くことができませんでした。この一つの問題は、私はデータが存在するかどうかをチェックするために百万回を試していないが、まだ何もチェックすることができません。検索し、同じ問題をチェックしましたが、ヒントは得られませんでした。だからここに何が間違っているのか教えてください。私はすべて自分自身で試してみますが、私が問題を抱えたら、しばらく解決できません。私はここに助けを求める。は、データがデータベース
<!DOCTYPE html>
<html>
<head>
<title>Test Title</title>
</head>
<body>
<?php
class Database{
public $db;
public function __construct($host,$username,$password,$dbname){
$this->db=new MySQLi($host,$username,$password,$dbname);
}
public function getData(){
$query="SELECT * FROM artisan";
$result=$this->db->query($query);
$users=array();
if($result->num_rows>0){
while($row=$result->fetch_assoc()){
$users[]=array(
"id"=>$row['id'],
"username"=>$row['username'],
"email"=>$row['email']
);
}
}else{
echo "No results found!";
}
return $users;
}
public function getContent(){
$query="SELECT * FROM content";
$result=$this->db->query($query);
$values=array();
if($result->num_rows>0){
while($row=$result->fetch_assoc()){
$values[]=array(
"title"=>$row['title'],
"body"=>$row['body']
);
}
}
return $values;
}
public function insertData(){
$title=$_POST['title'];
$query="INSERT INTO content(title,body) VALUES (?,?)";
$result=$this->db->query("SELECT COUNT(*) FROM content WHERE title=$title");
$stmt=$this->db->prepare($query);
$stmt->bind_param("ss",$_POST['title'],$_POST['body']);
if(!empty($_POST['title']) || !empty($_POST['body'])){
if($result->num_rows){
echo "User allready exists";
}else{
$stmt->execute();
}
}
}
private function validate(){
$query="SELECT title and body FROM contents";
$result=$this->db->query($query);
if($result){
echo "hi";
}
}
}
$database=new Database('localhost','root','','test');
$users=$database->getData();
$values=$database->getContent();
$database->insertData();
?>
<style type="text/css">
.container{
text-align:center;
}
table, th, td, {
border: 1px solid black;
}
table{
width:100%;
}
.content{
border:1px solid black;
}
</style>
<div class="container">
<?php
for($i=0;$i<count($values);$i++):
?>
<div class="content">
<?php echo $values[$i]["title"]."<br>"; ?>
<?php echo $values[$i]["body"]."<br>";?>
</div>
<?php endfor;?>
</div>
<table>
<colgroup>
<col span="2" style="background-color:red">
<col style="background-color:yellow">
</colgroup>
<tr>
<th>ID</th>
<th>username</th>
<th>email</th>
</tr>
<tr>
<td><?php foreach($users as $user)
echo $user['id']."<br>";
?></td>
<td><?php foreach($users as $user)
echo $user['username']."<br>";
?></td>
<td><?php foreach($users as $user)
echo $user['email']."<br>";
?></td>
</tr>
</table>
<form action="index.php" method="POST">
<input type="text" name="title">
<input type="text" name="body">
<input type="submit" name="submit">
</form>
</body>
</html>
ましたあなたはいくつかの適切なデバッグを行いますか? 'print_r($ users);'、 'print_r($ values);'。彼らはあなたが期待しているものを返すのですか?また、あなたは、SQLインジェクションのためのセキュリティ上のリスクである '$ _POST [ 'タイトル']' 'SELECT COUNT(*)のコンテンツFROM WHEREタイトル= $ title'を、準備していません。クラスの初期化変数の周りに 'if(!empty($ _ POST ['title'])){{}}を追加する必要があります。現在、フォームの送信が行われる前に実行されています。 – icecub
クエリはより具体的で、WHERE句を使用する必要があります。それ以外の場合は、行があるかどうかを確認しようとしています。 –
'タイトル= $タイトル「それはところで、文字列の場合)'その部分は、失敗している –