コードの使用をすぐに停止してください。SQLインジェクションに対して脆弱です。merkki
の値がだったらどうなるか考えてみてください1 OR 1=1
。ステートメントはすべてのレコードを返します。
SELECT * FROM Control_Mallit WHERE merkki_id = 1 OR 1=1
mysqli_
または関数を使用してパラメータをクエリにバインドする必要がありますPDO
(mysql_
関数は非推奨になっています。また、列リストを使用し、使用しないでくださいSELECT *
。
mysqli_
(テストされていない)を使用した可能な解決策は次のとおりです。
<?php
$link = mysqli_connect('localhost', 'my_user', 'my_password', 'world');
/* check connection */
if (!$link) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$array = array();
/* create a prepared statement */
$stmt = mysqli_prepare($link, "SELECT id, malli FROM Control_Mallit WHERE merkki_id = ?");
/* bind parameters for markers */
mysqli_stmt_bind_param($stmt, 'i', $_GET[merkki]);
/* execute query */
$result = mysqli_stmt_execute($stmt);
/* fetch associative array */
while ($row = mysqli_fetch_assoc($result)) {
$array[] = '"' . $row['id'] . '"' . ":" . '"' . $row['malli'] . '"';
}
/* free result set */
mysqli_free_result($result);
/* close connection */
mysqli_close($link);
echo '{' . implode(',', $array) . '}';
?>
編集
元のコードに従うと、このソリューションは機能するはずです。
$merkki = $_GET["merkki"];
$array = array();
// Retrieve all the data from the table to show models based on selection of manufacturer
$result = mysql_query("SELECT * FROM Control_Mallit WHERE merkki_id = $merkki")
or die(mysql_error());
while($row = mysql_fetch_array($result)){
$array[] = '"' . $row['id'] . '"' . ":" . '"' . $row['malli'] . '"';
}
echo '{' . implode(',', $array) . '}';