使用“LIKE%columname%”为每个参数PHP链接获取的数据

时间:2016-09-10 22:33:35

标签: php mysql

我的电影数据库中有actor字段,其中一个字段中有许多actor被逗号分隔,并使用下面的代码获取它们。我的要求是链接所有获取的演员。点击每个演员将进入他们的电影列表。 由于我在一个字段中有所有演员并用逗号分隔,因此努力将每个演员与单独的URL链接

<?php
require('connect');

$filmActor=$_GET['filmActor'];
$sql ="SELECT * FROM films WHERE filmActor LIKE  '%$filmActor%' LIMIT 0 , 5;";

$result = mysqli_query($conn, $sql);
while($row = mysqli_fetch_array($result))
{
$filmActor=$row['filmActor'];
$filmName=$row['filmName'];
$url=$row['url'];
echo "
    <a href='$url.html'>$filmName</a>: $filmActor<br>
    ";
}
mysqli_free_result($result);
mysqli_close($conn);
?>

输出我变得像: enter image description here

预期enter image description here

想要传递此参数: /actor.php?filmActor=Tom_Hanks,/actor.php?filmActor=Emma_Thompson等将取代他们所制作的每部演员电影。

1 个答案:

答案 0 :(得分:2)

此脚本应该有效。需要$ row [&#39; filmActor&#39;]并将所有演员分成一个阵列,然后我们一个接一个地打印出来。

请记住,这可以通过更好的方式完成,但这应该有效。 另外,我添加了一个&#34; mysqli_real_escape_string&#34;到GET输入&#34; $ _ GET [&#39; filmActor&#39;]&#34;防止SQL注入。

<?php

require('connect');

// Escape the input from the user, preventing SQL injections
$filmActor = mysqli_real_escape_string($conn,$_GET['filmActor']); 
$sql ="SELECT * FROM films WHERE filmActor LIKE  '%$filmActor%' LIMIT 0 , 5;";

$result = mysqli_query($conn, $sql);
while($row = mysqli_fetch_array($result))
{
    $filmActor=$row['filmActor'];
    $filmName=$row['filmName'];
    $url=$row['url'];
    echo "<a href='$url.html'>$filmName</a>:";

    // Make an array of the actors by splitting them by ','
    $actorsArray = explode(',',$filmActor);

    // Loop the array
    foreach ($actorsArray as $key => $actor)
    {

        // Just trim the space in front of name in case there is any
        $actor = trim($actor);

        // Check if the current key is == to the last key in the array
        // so it wont make an ',' in the end of the actors.
        if ($key == (count($actorsArray)-1))
            echo "<a href='/actor.php?filmActor=$actor'>$actor</a>";
        else
            echo "<a href='/actor.php?filmActor=$actor'>$actor</a>, ";
    }
}
mysqli_free_result($result);
mysqli_close($conn);

让我知道它是如何运作的。 正如tadman在上面的评论中所说的那样&#34;永远不要将$ _POST或$ _GET数据直接放入查询中,如果有人试图利用你的错误,这可能是非常有害的。&#34; < / p>

希望它有所帮助!