gpt4 book ai didi

php - 在php-mysql上从下拉选择器中搜索

转载 作者:太空宇宙 更新时间:2023-11-03 10:43:06 24 4
gpt4 key购买 nike

我正在尝试从下拉选择器进行搜索(过滤器),并且一直在Google上寻找希望。这是我的代码:

<form action="test.php" method="post">
<select name="value">
<option value="all">all</option>
<option value="ghassan">ghassan</option>
<option value="ali">ali</option>
</select>

<input type="submit" value="search"/>
</form>

<br/>
<?php
include("db.php");

if(isset($_POST['value'])) {

$column = $_POST['value']; // Set Column
$sql = "SELECT $column FROM users"; // Create Query
$query = mysqli_query($sql); // Run Query

// Loop through results
while ($row = mysqli_fetch_array($query)) {
echo "<br>". $row[$column] . "<br>";

echo "<table border=1>
<tr>
<th>id</th>
<th>username</th>
<th>email</th>
</tr>";
echo "<tr>";
echo "<td>" . $row['id'] . "</td>";
echo "<td>" . $row['username'] . "</td>";
echo "<td>" . $row['email'] . "</td>";
echo "</tr>";
};
echo "</table>";
}
?>


我删除了另一个mysql_fetch_array,因为它是错误添加的,
我尝试了多个代码而忘记删除它,但这仍然不是原因

最佳答案

首先,您没有将数据库连接传递给查询(这是一个未知的API):

$query = mysqli_query($sql);


内容应为:

$query = mysqli_query($connection, $sql);


$connection是您未发布的 db.php文件中可能使用的变量。

该文件必须包含用于查询的相同MySQL API, mysqli_,而不是 mysql_或PDO。

这些不同的API不会相互混合。

阅读有关如何与MySQLi API连接的手册:

http://php.net/manual/en/function.mysqli-connect.php

并注意可能的SQL注入。


How can I prevent SQL injection in PHP?


现在,我看到 <option value="all">,而您有 SELECT $column。我认为如果我正确的话,您想像在“全部”中一样执行 SELECT *

您需要对此保持精确,因为我不确定您要在这里做什么。

确保首先设置了现有的 all, ghassan, ali列。

当您执行查询时,这些不会填充,因为它们不是查询中列选择的一部分:

echo "<tr>";
echo "<td>" . $row['id'] . "</td>";
echo "<td>" . $row['username'] . "</td>";
echo "<td>" . $row['email'] . "</td>";
echo "</tr>";


因此,除了 $column变量外,您还需要在查询中添加这些列。

检查错误将在这里为您提供帮助。


http://php.net/manual/en/function.error-reporting.php
http://php.net/manual/en/mysqli.error.php




如您在自己的问题中发布的答案中所述


  “非常感谢您的帮助,但是我还有另一个问题,我正在使用下面的代码来回显阿拉伯语的名称,但是在您进行编辑之后,我无法再读取阿拉伯语的名称,请您帮忙”


mysql_query("SET NAMES 'utf8';"); 


不客气,Ghassan,但是您需要针对 https://stackoverflow.com/questions/ask发布一个新问题。

但是,要回答此 mysql_query("SET NAMES 'utf8';");,您不能按照我的回答中所述将 mysql_mysqli_混合使用。

您需要在查询之前执行 $connection->set_charset('utf8mb4');

$connection是您在db.php文件中使用的变量。

咨询 UTF-8 all the way through

关于php - 在php-mysql上从下拉选择器中搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35159643/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com