【发布时间】:2016-09-18 20:28:15
【问题描述】:
我正在使用此代码创建一个 urlshortner,如果来自美国的用户访问该链接,他将被重定向到某个页面,如果来自任何其他国家/地区的用户访问该链接,他将被重定向到另一个页面。它没有给我任何错误,但也没有工作。
<?php
$con = mysqli_connect("localhost","root","");
if (!$con){
die('Could not connect: ' . mysql_error());
}
mysqli_select_db($con, "shortenedurls"); //Replace with your MySQL DB Name
$de= mysqli_real_escape_string($con, $_GET["decode"]);
$sql = 'select * from short_urls where shorturl="$de"';
$urlid = mysqli_query($con,'SELECT id FROM short_urls WHERE shorturl="$de"');
$result=mysqli_query($con, 'SELECT * FROM redirect WHERE urlid="$urlid" LIKE "%US%"') or die(mysqli_error($con));
if(mysqli_num_rows($result) == 0 ) {
$result1 = mysqli_query($con, 'SELECT * FROM short_urls WHERE shorturl="$de"');
while($row = mysqli_fetch_array( $result1)) {
$res=$row['urlinput'];
header("location:".$res);
}
} else {
while($row = mysqli_fetch_array( $result)) {
$res=$row['urlinput1'];
header("location:".$res);
}
}
?>
【问题讨论】:
-
你做了什么调试?逐行逐行查看,打印出重要的变量和查询结果,看看哪里没有按照你的预期工作。
-
SELECT * FROM redirect WHERE urlid="$urlid" LIKE "%US%"这不起作用。您不能链接比较运算符。 -
在此处查看此声明,
$urlid = mysqli_query($con,'SELECT id FROM ...,它是紧接着声明的。mysqli_query()在成功时从 SELECT 语句返回一个mysqli_result对象,因此$urlid就是这样的对象,您直接在即时查询中使用它,这将不起作用。加上SQL语句的形成是错误的。 -
“$urlid = mysqli_query($con,'SELECT id FROM short_urls WHERE shorturl="$de"'); 中有一些问题,它说对象无法转换为字符串跨度>