Php SQL带有变量的Where



关于我的目标的详细信息:

所以我在我的网站边上做了一个小盒子,让我们选择我们想看的东西,但我在这个盒子上遇到了麻烦。它在Get中发送信息,基本上Get中没有任何内容,所以无论它有什么标签,网站都会显示所有图像,然后一旦我们用小框选择了一个标签,在Get中发出标签,然后重新加载页面,该页面现在应该只显示有所选标签的图像。当我回显var时,它是有效的,我可以看到正确的单词,但它似乎与select语句有问题。

实际结果:

事实上,它只显示了我的var的回声,看看它是否工作,我的代码没有显示任何内容。是的,在我的数据库中有一些带有我要找的标签的项目,因为当我显示每一张图像时,我只需要一个标签,就可以看到标签,它们就在那里。

我已经阅读了试图解决问题的内容:

SELECT WHERE A="的奇怪行为$var";SQL

带有循环变量的PHP SQL where语句

PHP SQL和';其中';具有可变

PHP&SQL WHERE(更改变量(

带有变量"的SQL查询;其中";

sql-pdo-php在变量中的位置

在SQL WHERE 中添加PHP变量

我已经尝试过:

"SELECT pic_id, pic_path, date_posted, tag, client_id FROM tblMemeovid WHERE tag = $tag ORDER BY pic_id DESC";
"SELECT pic_id, pic_path, date_posted, tag, client_id FROM tblMemeovid WHERE tag = '$tag' ORDER BY pic_id DESC";
"SELECT pic_id, pic_path, date_posted, tag, client_id FROM tblMemeovid WHERE tag = ' . $tag . ' ORDER BY pic_id DESC";
"SELECT pic_id, pic_path, date_posted, tag, client_id FROM tblMemeovid WHERE tag = :$tag ORDER BY pic_id DESC";
"SELECT pic_id, pic_path, date_posted, tag, client_id FROM tblMemeovid WHERE tag = ':$tag' ORDER BY pic_id DESC";
"SELECT pic_id, pic_path, date_posted, tag, client_id FROM tblMemeovid WHERE tag = "$tag" ORDER BY pic_id DESC";
'SELECT pic_id, pic_path, date_posted, tag, client_id FROM tblMemeovid WHERE tag = ' . $tag . ' ORDER BY pic_id DESC';
'SELECT pic_id, pic_path, date_posted, tag, client_id FROM tblMemeovid WHERE tag = &tag ORDER BY pic_id DESC';
'SELECT pic_id, pic_path, date_posted, tag, client_id FROM tblMemeovid WHERE tag = &$tag ORDER BY pic_id DESC';
"SELECT pic_id, pic_path, date_posted, tag, client_id FROM tblMemeovid WHERE tag = ". $tag . " ORDER BY pic_id DESC";
"SELECT pic_id, pic_path, date_posted, tag, client_id FROM tblMemeovid WHERE tag = ($tag) ORDER BY pic_id DESC";
"SELECT pic_id, pic_path, date_posted, tag, client_id FROM tblMemeovid WHERE tag = {$tag} ORDER BY pic_id DESC";

我甚至用$_GET代替了我的var

以下是显示其获取方式和选择位置的最低代码:

$tag = $_GET['tagChoosen'];
if(isset($_GET["tagChoosen"]))
{
echo "<br/> $tag";
$result = "SELECT pic_id, pic_path, date_posted, tag, client_id FROM tblMemeovid WHERE tag = ':$tag' ORDER BY pic_id DESC";
$results = $pdo->query($result);
}
else
{
$result = "SELECT pic_id, pic_path, date_posted, tag, client_id FROM tblMemeovid ORDER BY pic_id DESC";
$results = $pdo->query($result);
}
while ($data = $results->fetch())
{
$resultat = "SELECT username FROM tblClients WHERE client_id = ".$data['client_id'];
$resultats = $pdo->query($resultat);
while ($datas = $resultats->fetch())
{
$clientUsername = $datas['username'];
}
echo "
<div class='imgContainer'>
<div class='img'>
<img class='theImg' src='{$data['pic_path']}' onclick='window.open(this.src)'>
<div id='infoContainer'>
<div id='sousInfoContainer1'>
<div id='info1'>
<div class='info'>
<p>Date de publication: {$data['date_posted']}</p>
</div>
</div>
<div id='info2'>
<div class='info'>
<p>Tag: {$data['tag']}</p>
</div>
</div>
</div>
<div id='sousInfoContainer1'>
<div id='info3'>
<div class='info'>
<p>Publieur: {$clientUsername}</p>
</div>
</div>
</div>
</div>
<a href='{$data['pic_path']}' download='{$data['pic_path']}'>
<button class='btn'><i class='fa fa-download' alt=''></i> Télécharger</button>
</a>
<hr class='botrow'>
</div>
</div>
";
}
?>
</div>
<div id="rightContainer">
<form id='CatChoice' action='' method='get'>
<label><br/>Choisissez la catégorie que vous voulez voir</label>
<select name='tagChoosen'>
<option value='Drôle'>Drôle</option>
<option value='Dark'>Dark</option>
<option value='Informatique'>Informatique</option>
<option value='Programmation'>Programmation</option>
<option value='Gaming'>Gaming</option>
<option value='Animaux'>Animaux</option>
<option value='Film'>Film</option>
<option value='Série'>Série</option>
<option value='18+'>18+</option>
<option value='École'>École</option>
<option value='Travail'>Travail</option>
<option value='Soviet'>Soviet</option>
</select>
<input type='submit' value='Choisir' name='submit'>
</form>
</div>
</div>

我也试过,把整个时间都放在if和else中,但它不起作用

我真的不喜欢使用stackoverflow,因为我总是被禁止发布问题,因为人们认为我的问题毫无用处,但我只是在学习,如果她帮助别人,任何问题都是无用的。但我真的被卡住了。我已经被困在那里三天了。

我发现了问题,正如我所说,问题是带有var的WHERE,我所要做的就是:

$result = "SELECT pic_id, pic_path, date_posted, tag, client_id FROM tblMemeovid WHERE tag ='".$tag."' ORDER BY pic_id DESC";

我尝试了

感谢Wimanicesir的帮助,我会尝试加入以使其更好

由于后续问题,我创建了一个可能有效的解决方案。但也可能需要做出一些调整。

我加入了你的表,因为客户id将是相同的。现在您有了一个更完整的数据集。

<?php
$tag = $_GET['tagChoosen'];
$result = "SELECT pic_id, pic_path, date_posted, tag, client_id FROM tblMemeovid INNER JOIN tblClients ON tblMemovid.client_id = tblClients.client_id";
if(isset($_GET["tagChoosen"]))
{
result .= " WHERE tag = '$tag'";
}
// Let's join the tblClients into our selection.
$result .= " ORDER BY pic_id DESC";
$results = $pdo->query($result);
// In this loop we already know the username because we joined the tabel tblClients
while ($data = $results->fetch())
{
echo "
<div class='imgContainer'>
<div class='img'>
<img class='theImg' src='{$data['pic_path']}' onclick='window.open(this.src)'>
<div id='infoContainer'>
<div id='sousInfoContainer1'>
<div id='info1'>
<div class='info'>
<p>Date de publication: {$data['date_posted']}</p>
</div>
</div>
<div id='info2'>
<div class='info'>
<p>Tag: {$data['tag']}</p>
</div>
</div>
</div>
<div id='sousInfoContainer1'>
<div id='info3'>
<div class='info'>
<p>Publieur: {$data['username']}</p>
</div>
</div>
</div>
</div>
<a href='{$data['pic_path']}' download='{$data['pic_path']}'>
<button class='btn'><i class='fa fa-download' alt=''></i> Télécharger</button>
</a>
<hr class='botrow'>
</div>
</div>
";
}
?>

最新更新