我正在构建一个网页,根据网址参数检索数据。
有两个可能的参数。
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
。
我很茫然,因为一切都符合要求。
答案 0 :(得分:2)
您需要''
查询中的变量:例如'$articleName'
:
$articleQuery = mysqli_query($conn, "SELECT * FROM currentArticles WHERE article_name = '$articleName'");
答案 1 :(得分:1)