Php 准备好的语句示例
在我目前正在编写的这个新系统中(在学习PHP的同时),我一直在尝试使用预先准备好的语句,但找不到一个可以让这段代码正常工作的示例。在花了相当长的时间之后,我在没有准备好陈述的情况下写了它(否则我仍然会被卡住) 但是,如果有人能告诉我如何使用预先准备好的语句实现相同的功能,那就太好了。我正在为Php 准备好的语句示例,php,mysqli,prepared-statement,Php,Mysqli,Prepared Statement,在我目前正在编写的这个新系统中(在学习PHP的同时),我一直在尝试使用预先准备好的语句,但找不到一个可以让这段代码正常工作的示例。在花了相当长的时间之后,我在没有准备好陈述的情况下写了它(否则我仍然会被卡住) 但是,如果有人能告诉我如何使用预先准备好的语句实现相同的功能,那就太好了。我正在为INSERTs和UPDATEs使用准备好的语句,但没有使用SELECT使一个语句起作用 这段代码是一个AJAX页面,用于根据页面上的选择填充下拉列表 代码如下: <?php require_once('
INSERT
s和UPDATE
s使用准备好的语句,但没有使用SELECT
使一个语句起作用
这段代码是一个AJAX页面,用于根据页面上的选择填充下拉列表
代码如下:
<?php
require_once('assets/includes/config.php');
if ((!isset($_GET['cat']) || !is_numeric($_GET['cat'])) && (!isset($_GET['subcat']) || !is_numeric($_GET['subcat'])))
$response = array('success' => FALSE);
else {
$conn = mysqli_connect($config["db"]["host"],$config["db"]["dbname"],$config["db"]["password"],$config["db"]["username"]);
$cat= mysqli_real_escape_string($conn, $_GET['cat']);
$subcat= mysqli_real_escape_string($conn, $_GET['subcat']);
$sql = "SELECT * FROM jf_data WHERE cat = $cat and subcat = $subcat;";
$result = mysqli_query($conn,$sql);
$options = "";
while($row = mysqli_fetch_array($result)) {
$options .= '<option value="'. $row['id'] .'">'. $row['data'].'</option>';
}
$response = array(
'success' => TRUE,
'options' => $options
);
}
header('Content-Type: application/json');
echo json_encode($response);
?>
我来试一试:
$conn = mysqli_connect($config["db"]["host"],$config["db"]["username"],$config["db"]["password"],$config["db"]["dbname"]);
$cat = $_GET['cat'];
$subcat = $_GET['subcat'];
$options = '';
$sql = "SELECT id,data FROM jf_data WHERE cat = ? and subcat = ?;";
if($stmt = mysqli_stmt_prepare($conn,$sql)){
mysqli_stmt_bind_param($stmt,'ss',$cat,$subcat);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt,$id,$data);
while(mysqli_stmt_fetch($stmt)){
$options .= '<option value="' . $id . '">' . $data . '</option>';
}
mysqli_stmt_close($stmt);
}
$response = array(
'success' => TRUE,
'options' => $options
);
这允许非常简单的修改,无论何时需要使用它,只需添加require:
require_once 'requires/mysqli_[appname]_SUID.php';
你可以走了。不知道这是否也有帮助,只是我的练习。谢谢。绝对不是故意的。有用的问题(和答案)。该示例对于以后的重用非常有用。尽管我得到了以下信息:警告:mysqli_stmt_prepare()希望参数1是mysqli_stmt,对象在第15行的xxx中给出-这在“if($stmt)”上line@Graeme-抱歉,之前没有注意到这一点,您的
mysqli_connect()
语句出现问题。它需要转到mysqli_connect($host、$user、$password、$database);我已经用正确的顺序更新了答案,并提供了一个指向文档的链接和一个示例设置。
require_once 'requires/mysqli_[appname]_SUID.php';