【发布时间】:2014-05-31 14:26:30
【问题描述】:
我正在使用以下 PDO 查询:
<?php
$cadena = $_SESSION[Region];
// We Will prepare SQL Query
$STM = $dbh->prepare("SELECT `id_mesero`, `nombre_mesero`,`alias_mesero`, `rest_mesero` FROM tbmeseros WHERE cadena_mesero='$cadena'");
// For Executing prepared statement we will use below function
$STM->execute();
// we will fetch records like this and use foreach loop to show multiple Results
$STMrecords = $STM->fetchAll();
foreach($STMrecords as $row)
{
“rest_mesero”字段的值是“tbrestaurantes”表中的索引。
我需要将“tbrestaurantes”中的一些字段值加入到 PDO 查询中,但我不知道如何使用 PDO。
欢迎任何帮助。
更新的问题文本
这是我的查询建议:
$dbh->prepare("SELECT * FROM tbmeseros LEFT JOIN tbrestaurantes ON tbmeseros.rest_mesero = tbrestaurantes.id_restaurante WHERE tbmeseros.cad_mesero = ?");
但是显示错误:
警告:PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: 参数号无效:第 80 行 /.../AdminMeseros.php 中没有绑定参数
第 80 行是
$STM->execute();
这是我更新后的查询:
<?php
$cadena = $_SESSION[Region];
$STM =$dbh->prepare("SELECT * FROM tbmeseros LEFT JOIN tbrestaurantes ON tbmeseros.rest_mesero = tbrestaurantes.id_restaurante WHERE tbmeseros.cad_mesero = ?");
$STM->bindParam(1, $cadena);
// For Executing prepared statement we will use below function
$STM->execute(array($cadena));
// we will fetch records like this and use foreach loop to show multiple Results
$STMrecords = $STM->fetchAll();
foreach($STMrecords as $row)
{
这里是表格的截图:
对于 tbmeseros:
对于 tbrestaurantes:
$cadena 的值为 'HQ3'。
【问题讨论】:
-
发布两个表结构以及您需要选择的字段。
-
使用 PDO 并没有什么特别之处。您只需将 SQL 放入
prepare()的参数中。 -
为什么你的 SQL 中有一个变量?使用 PDO 时,应使用
:parameter,并使用bindParam()将变量链接到它。 -
@Barmar,我已经在问题中包含了我对 SQL 的建议。
-
没关系,有效,最后一个错误是字段名cad_mesero,应该是cadena_mesero。感谢您的帮助。