2017-03-13 5 views
0

私はユーザーを表す変数でクエリを作成しようとしています。PHPとMySQLのクエリのエラー

これはクエリです:

$sq12 = "select sum(monto) from pagos where usuario = $_SESSION['XUSUARIO']" or die(mysql_error()); 
$re2 = mysql_query($sq12,$conexion); 

$_SESSION['XUSUARIO']は、各ユーザのデータをDBにルックアップすることです。

編集: 質問が変更されました。現在はARRAYと表示されています。

+0

が$ SQL2 =で唯一のクエリを置く '....' または一部を死ぬがあります無効なSQL –

+1

**警告**:PHPを学んでいるだけの方は、[mysql_query'](http://php.net/manual/en/function.mysql-query.php)を使用しないでください。インタフェース。それはPHP 7で削除されたのでとてもひどいと危険です。[PDOのようなものは学ぶのが難しくない](http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps -pdo-for-database-access /)と[PHP The Right Way](http://www.phptherightway.com/)のようなガイドがベストプラクティスを説明しています。あなたのユーザーデータは**適切にエスケープされていない**(http://bobby-tables.com/php.html)であり、[SQLインジェクションのバグ](http://bobby-tables.com/)があります。悪用される。 – tadman

答えて

1

またはdie()が間違った場所にあります。

$string = '('; 
$string .= implode(',', $_SESSION['XUSUARIO']); 
$string .= ')'; 

し、クエリにそれを追加します:

"... where usuario IN $string" 
$sq12 ="select sum(monto) from pagos where usuario = {$_SESSION['XUSUARIO']}"; 
$re2 = mysql_query($sq12,$conexion) or die(mysql_error()); 
+0

やダイがあっても···などは動作しません –

+0

あなたのコードを投稿してください。あなたがそれで達成しようとしていることを説明してください。このコードに問題はありません。 – Dimi

0

$_SESSION['XUSUARIO']

アレイが、あなたがこのような何かをやって、クエリ文字列にそれをフォーマットする必要がありますです
+0

あなたは爆音を意味します。 explodeは文字列を配列に変換します。 –

0

スカラー値のみを文字列に補間できます。例えば、IDの配列を使用しimplode(またはエイリアスjoin)を使用するには:

<?php 
$usuario = implode(',',$_SESSION['XUSUARIO']); 
$sq12 = "select sum(monto) from pagos where usuario in ($usuario)"; 
$re2 = mysql_query($sq12,$conexion) or die(mysql_error()); 

EDIT:PDO PDO PDO PDO