2

クエリのすべての結果を表示するにはどうすればよいですか? $author が Array ( [0] => 1 ) として出力される場合、クエリは正しいデータを取得します。ただし、 $author が Array ( [0] => 1 [1] => 8 ) またはフォームから受け取った値の任意の組み合わせとして出力される場合、空が返されます。

配列は正しく印刷されるので、その時点から先に進み、問題はクエリであると想定していますが、それを理解することはできません。

$query = "SELECT * FROM estudos";
if (isset($author)){
    $query.=" WHERE author='" . implode ($author) ."'";
    print_r ($author);
}

これが私のphpとhtmlです...

$results=$dbclient->query($query) or die(mysqli_error());

<?php 
while($row=mysqli_fetch_array($results))
    echo"<tr><td class='name'>$row[name]</td>";
?>
4

3 に答える 3

2

glueのパラメータがありませんimplode()。それがなければ、次の$queryようになります。

SELECT * FROM estudos WHERE author='FooBarBaz'

これは構文的に有効な SQL クエリですが、期待どおりの結果が得られません。

あなたはおそらく IN句を探しています。

$query .= " WHERE author IN (" . implode (',', $author) .")";

クエリのSQL インジェクションの脆弱性を修正していないことに注意してください。MySQLi または PDO に切り替えて、パラメーター化されたクエリを使用して SQL インジェクションから保護することをお勧めします。

于 2013-11-06T19:16:49.087 に答える
1

SQLクエリでIN条件を使用する必要があります

$query.=" WHERE author IN (" . implode (',',$author) .")";

SQL IN 条件

author が文字列の場合、コードは次のようになります

 if (isset($author)){
$query . = "("
foreach ($author as $value)
{
    $query .= "'".$value."',";
}
$query = substr($query,0,-1);
$query .= ")";

    print_r ($author);
}
于 2013-11-06T19:18:53.473 に答える