如何使用 mysqli 为 select 查询准备语句
How to prepare statement with mysqli for select query
我很担心sql注射。我一直在阅读它并尝试准备以下查询:
$query_AcousticDB = "SELECT * FROM products WHERE Category = 'Acoustic ' ORDER BY RAND()";
$AcousticDB = mysqli_query($DB, $query_AcousticDB) or die(mysqli_connect_error());
$row_AcousticDB = mysqli_fetch_assoc($AcousticDB);
$totalRows_AcousticDB = mysqli_num_rows($AcousticDB);
效果很好。
我以为只需要改成下面的:
$query_AcousticDB = prepare("SELECT * FROM products WHERE Category = 'Acoustic ' ORDER BY RAND()");
但是这不起作用。我收到以下错误:Call to undefined function prepare()
我仍然希望得到我的值:<?php echo $row_AcousticDB['what ever']; ?>
有人能指出我正确的方向吗?
这个怎么样?
$category = "Acoustic";
$sql = "SELECT * FROM products WHERE Category = ? ORDER BY RAND()";
$stmt = $DB->prepare($sql);
$stmt->bind_param('s', $category);
$stmt->execute();
$row_AcousticDB = $stmt->get_result(); // altenative: $stmt->bind_result($row_AcousticDB);
$row_AcousticDB->fetch_array(MYSQLI_ASSOC)
如果您让用户输入任何数据(在网站的文本框中)或者您从数据库中提取任何内容以供使用(二阶注入的风险),请确保对其进行清理(清除任何讨厌的标签,如 <或 >) 通过使用 htmlspecialchars($category)
或 htmlentities($category)
.
在您的代码中实施此方法后,您将相当安全地免受 SQL 注入 :)
尝试使这个变量成为全局变量:把它放在脚本的上半部分 global $acousticDB;
或者你可以试试这个 $acoustic='';
我很担心sql注射。我一直在阅读它并尝试准备以下查询:
$query_AcousticDB = "SELECT * FROM products WHERE Category = 'Acoustic ' ORDER BY RAND()";
$AcousticDB = mysqli_query($DB, $query_AcousticDB) or die(mysqli_connect_error());
$row_AcousticDB = mysqli_fetch_assoc($AcousticDB);
$totalRows_AcousticDB = mysqli_num_rows($AcousticDB);
效果很好。
我以为只需要改成下面的:
$query_AcousticDB = prepare("SELECT * FROM products WHERE Category = 'Acoustic ' ORDER BY RAND()");
但是这不起作用。我收到以下错误:Call to undefined function prepare()
我仍然希望得到我的值:<?php echo $row_AcousticDB['what ever']; ?>
有人能指出我正确的方向吗?
这个怎么样?
$category = "Acoustic";
$sql = "SELECT * FROM products WHERE Category = ? ORDER BY RAND()";
$stmt = $DB->prepare($sql);
$stmt->bind_param('s', $category);
$stmt->execute();
$row_AcousticDB = $stmt->get_result(); // altenative: $stmt->bind_result($row_AcousticDB);
$row_AcousticDB->fetch_array(MYSQLI_ASSOC)
如果您让用户输入任何数据(在网站的文本框中)或者您从数据库中提取任何内容以供使用(二阶注入的风险),请确保对其进行清理(清除任何讨厌的标签,如 <或 >) 通过使用 htmlspecialchars($category)
或 htmlentities($category)
.
在您的代码中实施此方法后,您将相当安全地免受 SQL 注入 :)
尝试使这个变量成为全局变量:把它放在脚本的上半部分 global $acousticDB;
或者你可以试试这个 $acoustic='';