微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

需要帮助将 SQL 查询转换为准备好的语句

如何解决需要帮助将 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 举报,一经查实,本站将立刻删除。