構文エラーは見当たりませんが、それほど重要ではない問題がいくつか見られます。
- グローバルを使用しています。
- 関数を使用してい
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;
}
これらすべての問題を一度に解決します。このコードで私が行ったことについて学ぶために、私が提供したリンクについて読む時間をとってください。