gpt4 book ai didi

PHP:用逗号分隔 MySQL 查询值

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

我有一个用 PHP 编写的 MySQL 查询:

$merkki = $_GET["merkki"];
// 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());
echo '{';
while($row = mysql_fetch_array($result)){
echo '"' . $row['id'] . '"' . ":" . '"' . $row['malli'] . '"';
}
echo '}';

结果是正确的,但如何在每条记录后得到一个逗号?如果我在每一行之后回显 (,),我的代码将不起作用。我需要它的格式如下所述。

{
"":"--",
"series-1":"1 series",
"series-3":"3 series",
"series-5":"5 series",
"series-6":"6 series",
"series-7":"7 series"
}

执行此操作的最佳方法是什么?

最佳答案

立即停止使用您的代码。它容易受到 SQL 注入(inject)攻击。想一想如果 merkki 的值为 1 OR 1=1 会发生什么。该语句将返回所有记录:

SELECT * FROM Control_Mallit WHERE merkki_id = 1 OR 1=1

您需要使用 mysqli_PDO 函数将参数绑定(bind)到您的查询(mysql_ 函数是 being deprecated 。此外,使用列列出而不是 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) . '}';

关于PHP:用逗号分隔 MySQL 查询值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12905472/

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