我正在使用以下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)
{
&#39; rest_mesero&#39; field是表格中的指数&#39; tbrestaurantes&#39;。
我需要加入来自&#39; tbrestaurantes&#39;的一些字段值。 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的价值是&#39; HQ3&#39;。
答案 0 :(得分:1)
你需要填补?在查询中:
$q = $dbh->prepare("SELECT * FROM tbmeseros LEFT JOIN tbrestaurantes ON tbmeseros.rest_mesero = tbrestaurantes.id_restaurante WHERE tbmeseros.cad_mesero = ?");
$q->bindValue( 1, 'x' );
$q->execute();
print_r( $q->fetchAll( PDO::FETCH_ASSOC );
准备中你可以使用&#39;?&#39;然后使用bindValue将转义值附加到查询中。您的查询似乎没有这个,这是导致错误的原因。
答案 1 :(得分:1)
在SQL中放置参数时,需要提供参数的值。有两种方法可以做到这一点:
1)致电bindParam()
:
$STM->bindParam(1, $cadana);
2)在致电execute()
时提供值:
$STM->execute(array($cadana));