如何解决需要帮助将 SQL 查询转换为准备好的语句
我目前正在努力将我的 sql 查询语句转换为准备好的语句。我希望我能得到一些帮助。
我需要将 2 个转换为准备好的语句:
$query = "SELECT disTINCT catename FROM catetable";
$queryStatement = MysqLi_query($connection,$query);
<select name="bsearch" id="bsearch">
<?PHP while ($one_model= MysqLi_fetch_assoc($queryStatement) ) { ?>
<option value="<?PHP echo $one_model['catename']; ?>">
<?PHP echo $one_model['catename']; ?>
</option>
还有
$filter = "";
if(isset($_POST['bsearch']))
{
$mod_selected = $_POST['bsearch'];
$filter = " WHERE catename ='$mod_selected'";
}
$sql = "SELECT a.name,a.picture,b.catename,a.description,a.price,a.id FROM bikeproduct a INNER JOIN catetable b ON a.cid = b.cateid". $filter;
$bike_list = MysqLi_query($connection,$sql);
我将如何更改为第二个代码创建一个 bind_param?有一些解释也会很好。谢谢。
解决方法
$query = "
SELECT a.name,a.picture,a.description,a.price,a.id
FROM bikeproduct a
JOIN catetable b
ON a.cid = b.cateid
WHERE b.catename = ?
";
$stmt = $pdo->prepare($query);
$stmt->execute($_POST['bsearch']);
$result = $stmt->fetch();
这假设提供了连接脚本。通常,这是在 htdocs 环境之外保存的单独文档,可能如下所示:
<?php
--my_pdo_connection_statements.inc
$host = 'localhost';
$db = 'your_database';
$user = 'user';
$pass = 'L0nG&complicated_passW0rd';
$charset = 'utf8mb4';
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,PDO::ATTR_EMULATE_PREPARES => false,];
try {
$pdo = new PDO($dsn,$user,$pass,$options);
} catch (\PDOException $e) {
throw new \PDOException($e->getMessage(),(int)$e->getCode());
}
?>
然后通过 require() 或 include() 将其包含在您的代码中:
require('path/to/my_pdo_connection_statements.inc');
所以 $pdo 只是管理连接的对象。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。