$street = 'astreet';
$lname = 'alname';
$fname = 'afname';
$list = '1,2,3,4,5';
$var = 'admin';
$db = new PDO("mysql:dbname=customers;host=localhost",$var,$var);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
$sql = "SELECT * FROM `table` WHERE `id` in ($list) AND `first_name` LIKE :fname AND `last_name` LIKE :lname AND `street_name` LIKE :street";
$stmt = $db->prepare($sql);
$stmt->execute(array(':street' => $street));
$stmt->execute(array(':fname' => $fname));
$stmt->execute(array(':lname' => $lname));
$result = $db->query($sql);
foreach ($result as $row) {
echo $row['post_code'];
}
是否有代码缺失/不正确?
谢谢
$stmt = $db->prepare($sql);
$stmt->execute(array(':street' => $street));
$stmt->execute(array(':fname' => $fname));
$stmt->execute(array(':lname' => $lname));
您将运行同一个查询三次,每次都使用不同的参数。您需要按照以下方式运行查询:
$stmt = $db->prepare($sql);
$stmt->execute(array(':street' => $street, ':fname' => $fname, ':lname' => $lname));
并一次性传递所有三个参数。
编辑添加:
$stmt = $db->prepare($sql);
$stmt->bindParam(':street', $street);
$stmt->bindParam(':fname', $fname);
$stmt->bindParam(':lname', $lname);
$stmt->execute();
$sql = "SELECT * FROM `table` WHERE `id` in ($list) AND `first_name` LIKE ? AND `last_name` LIKE ? AND `street_name` LIKE ?";
$stmt = $db->prepare($sql);
$stmt->execute(array($fname, $lname, $street));
问题内容: 这个问题已经在这里有了答案 : 由于在MySQL中使用保留字作为表或列名而导致的语法错误 (1个答案) 3年前关闭。 我已经浏览了所有其他StackOverflow(和Google)中相同问题的帖子,但似乎都没有解决我的问题。 我正在使用PDO和PHP。 我的代码: 而第一个print_r给 这是预期的(没有一个为空) 但它输出错误 SQLSTATE [42000]:语法错误或访问冲突
问题内容: 我想在同一查询中使用WhereIn和Groupby来获取结果。 我已经试过了: 但是我得到了这个错误信息: SQLSTATE [42000]:语法错误或访问冲突:1055’sbrtpt.loading.id’不在GROUP BY中(SQL:从中选择从(14,15,16)组中的id按Vehicle_no进行加载) 问题答案: 简短答案 在-> 数组中 设置为全部禁用。 .... 要么 您
在cmd中提交“php artisan migrate:fresh”后出现错误。 SQLSTATE[42000]:语法错误或访问冲突:1071指定的密钥太长;最大密钥长度为767字节(SQL:alter tableaddunique()
问题内容: 嗨,我正在尝试学习使用准备好的语句来避免SQL注入等的正确方法。 当我执行脚本时,我从脚本中收到一条消息,提示已插入0行,我希望这表示已插入1行,并且当然会更新表。我不完全确定自己准备好的陈述,因为我已经做过一些研究,我的意思是每个例子都各不相同。 更新表格时,我需要声明所有字段吗?还是只更新一个字段就可以了? 任何信息将非常有帮助。 index.php classes / class
问题内容: 我使用准备好的语句编写了select语句。每次尝试运行它都会出现此错误。我如何克服这个错误?我的jdbc连接器是mysql-connector- java-5.1.13-bin.jar。我的代码: 错误代码.. 2013年10月1日,下午1:23:23 sanin.lands.model.View_ads_cls getAdDetail 问题答案: 错误在这一行 这样做
问题内容: 今天有人告诉我,我确实应该在应用程序中使用PDO和准备好的语句。在我了解好处的同时,我也在努力了解如何将其实现到我的工作流程中。除了它使代码更简洁外,我是否应该有一个特定的数据库类来容纳所有准备好的语句,还是应该在每次运行查询时都创建一个?我发现很难理解何时应使用标准PDO查询以及何时应使用准备好的语句。任何示例,技巧或教程链接将不胜感激。 问题答案: pdo :: prepare()