gpt4 book ai didi

PHP准备和执行

转载 作者:太空宇宙 更新时间:2023-11-03 11:55:50 25 4
gpt4 key购买 nike

我使用以下代码在数据库中执行查询:

$sql = "SELECT * FROM cc_topchoices  WHERE location='$location' ORDER BY position asc";
$result = mysqli_query($conn, $sql);

我读到这种查询方式不安全,所以我想在 php 中使用语句 prepare()execute()现在我的代码如下所示:

$sql = "SELECT * FROM cc_topchoices WHERE location=:location ORDER BY position asc";
$stmt = $conn->prepare($sql);
$stmt->execute(array(":location" => $location));

$result = mysqli_query($conn, $stmt);

但这给了我这个错误:

fatal error :在 bool 值上调用成员函数 execute()

有什么想法吗?

编辑

现在我的代码是这样的:

// Create connection
$conn = new PDO("mysql:host=$servername;dbname=$dbname", "$username", "$password");
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$conn->exec("set names utf8"); //BECAUSE I NEED TO WORK WITH CHINESE LANGUAGE

$sql = "SELECT * FROM cc_topchoices WHERE location=? ORDER BY position asc";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':location', $location);
$stmt->execute(array($location));
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);

if ($result > 0) {
// output data of each row
while($row = $stmt->fetch()) {
echo "<li><div><a href='". $row["rest_url"] ."'><img src='images/top_choices/". $row["image"] ."' alt='". $row["alt_desc"]. "' /></a></div></li>";
}
} else {
echo "0 results";
}

正在工作 :) 只需要知道这是否是一个好的和安全的做法

最佳答案

PDO 支持命名参数。 MySQLi 没有。 $stmtfalse 表明您尝试准备的 SQL 在语法上是错误的。使用 ? 而不是 :location。查看 MySQLi 手册以了解使用 MySQLi 的正确方法。或者,切换到 PDO。

关于PHP准备和执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32756915/

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