【问题标题】:php code for urls shortner not working, page not redirectingurl 缩短器的 php 代码不起作用,页面未重定向
【发布时间】: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"'); 中有一些问题,它说对象无法转换为字符串跨度>

标签: php sql mysqli


【解决方案1】:
"$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%'") 

应该是

$result=mysqli_query($con, "SELECT * FROM redirect 
                            WHERE urlid IKE '%US%'") 

【讨论】:

  • 但是如果我希望它同时满足这两个条件,我的意思是 urlid 必须是 $urlid 并且它必须在同一行中有 'US'。
  • $urlid 不是 Rajeep cmets 的字符串。
猜你喜欢
  • 1970-01-01
  • 2012-06-15
  • 1970-01-01
  • 1970-01-01
  • 2014-05-15
  • 2014-04-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多