PHP修改URL参数后从MySQL检索数据

时间:2016-04-02 16:47:35

标签: php mysql get

我正在构建一个网页,根据网址参数检索数据。

有两个可能的参数。

1:id使用$_GET['id']

检索

2:name使用$_GET['name']

检索

当我使用id参数检索数据时,它就像一个魅力,因为id始终是一个数字值,而不是按字母顺序排列的文本。

但是当尝试使用name参数检索数据时,我没有得到任何结果。

name参数正在检查数据库中是否有文章标题为参数的文章。

例如,网址中的name参数如下所示:

http://example.com/safetyarticles/view.php?name=9-clues-to-solving-this-parameter-issue

在数据库中,文章名称为:9 Clues To Solving This Parameter Issue

我已经编写了一些行来删除我的url参数中的破折号,然后将每个单词大写以匹配文章名称,但我没有得到任何结果。

这是我写的代码:

$conn = getConnected("safetyArticles");
if(isset($_GET['id'])) { 
    $articleID = $_GET['id'];
    $articleQuery = mysqli_query($conn, "SELECT * FROM currentArticles WHERE article_id = $articleID");
    $article  = mysqli_fetch_array($articleQuery);
}
else if(isset($_GET['name'])) {
    $articleName = $_GET['name'];
    $articleName = preg_replace("/[\-]/", " ", $articleName); // Replace dashes in URL parameter with spaces
    $articleName = ucwords($articleName); // Uppercase first letter of each word of URL parameter 
    $articleQuery = mysqli_query($conn, "SELECT * FROM currentArticles WHERE article_name = $articleName");
    $article  = mysqli_fetch_array($articleQuery);
}

据我所知,用空格替换破折号并将每个单词大写应该使数据库中的article_name$articleName匹配。

我添加了一行echo $articleName只是为了查看输出结果是什么,结果是9 Clues To Solving The Mystery Of The Pilot Car与数据库中的标题相匹配,但结果没有被拉出。

我直接将其复制出数据库只是为了表明标题确实相同:9 Clues To Solving The Mystery Of The Pilot Car

我很茫然,因为一切都符合要求。

2 个答案:

答案 0 :(得分:2)

您需要''查询中的变量:例如'$articleName'

$articleQuery = mysqli_query($conn, "SELECT * FROM currentArticles WHERE article_name = '$articleName'");

答案 1 :(得分:1)

查询中的
$ articleName需要像这样引用:'$ articleName'。例如  $ articleQuery = mysqli_query($ conn,“SELECT * FROM currentArticles WHERE article_name ='$ articleName'”);