虽然我没有看到语法错误,但我确实看到了其他一些不那么重要的问题:
- 您正在使用全局变量。
- 你正在使用
mysql_*
函数。
- 您选择的数据超出了您的需要。
让我们解决其中的每一个问题:
您正在使用全局变量
不要使用全局变量,而是将您需要的作为参数传递给函数:
function sortByMetal($conn) {
您正在使用mysql_*
函数
请不要将mysql_*
函数用于新代码。它们不再被维护并且社区已经开始了弃用过程。看到红框了吗?相反,您应该了解准备好的语句并使用PDO或MySQLi。如果你不能决定,这篇文章将有助于选择。如果你想学习,这里有很好的 PDO 教程。
您选择的数据超出了您的需要
SELECT *
如果您只打算使用name
. 您可以使用SELECT `name`
来仅选择您需要的数据。
了解了所有这些后,我想出了这个:
/**
* @param PDO $conn
*
* @return string
*/
function sortByMetal(PDO $conn) {
$query = <<<MySQL
SELECT `name`
FROM `necklaces`
WHERE `metal_id` = 1
AND `color_id` = 2;
MySQL;
$stmt = $conn->prepare($query);
$stmt->execute();
$result = "";
while ($necklace = $stmt->fetch(PDO::FETCH_ASSOC)) {
$result .= $necklace['name'];
}
return $result;
}
一口气解决了所有这些问题。请务必花时间阅读我提供的链接,以了解我在此代码中所做的工作。