2016-04-02 110 views
1

我正在构建一个网页,根据URL参数来检索数据。PHP修改URL参数后从MySQL中检索数据参数

有两个可能的参数。

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

2检索idname其使用$_GET['name']

检索时我使用的id参数它像自id一个魅力检索数据始终是一个数值和从来没有字母文字。

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

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

例如,在URL中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); 
} 

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

我确实增加了一行echo $articleName来查看输出结果是什么,结果是9 Clues To Solving The Mystery Of The Pilot Car,它与数据库中的标题相匹配,但结果未被拉出。

我直接从数据库中拷贝出来,只是为了表明标题确实是一样的:9 Clues To Solving The Mystery Of The Pilot Car

我不知所措,因为所有事情都应该如此。

回答

2

你需要周围查询的变量'':如'$articleName':需要被引用这样在查询

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

工作。现在我有点困惑,因为在'id'查询中,它没有它们,并且这个它需要它们。这是数字和字母的差异吗? –

+0

可能 - 但您应该将$ articleID更改为'$ articleID'以及 – gavgrif

+0

会这样做。谢谢您的帮助。我会尽快让我接受。 –

1

$ ArticleName的: '$ ArticleName的'。例如 $ articleQuery = mysqli_query($ conn,“SELECT * FROM currentArticles WHERE article_name ='$ articleName'”);

+0

谢谢。第一个答案是正确的,但由于时间限制,我无法接受网站。由于我不能接受2答案这里是一个赞扬:) –

+0

@JesseElser我的荣幸。 –