注意:未定义的变量...变量声明错误

时间:2016-05-08 02:15:00

标签: php html

我最近发布了但我不认为我解释得很好。

我有一个页面产品页面,网址是例如http:....... rest_id = 3 / area ='Enfield'。我一直在我的网站上使用类似的查询但是这个查询不起作用,即使它提前约2分钟工作。

我正在使用GET语句来获取url中的区域名称,然后从那里我使用区域名称从数据库中获取正确的数据,例如电话号码,推特和Facebook句柄。但没有任何表现。

我有错误处理程序,我唯一的错误是注意:未定义的变量:twit in ...对于所有3个变量,即使它们已被声明。

任何想法可能会发生这种情况。

  if (isset($_GET['area'])) {
                    $franc_dets = $_GET['area'];
                    $get_franc_d = "SELECT * FROM Franc_dets WHERE Fran_City = '$franc_dets'";
                    mysqli_stmt_execute($run_get_franc_d);
                    $iii = 1;

                    while ($row_get_fram = mysqli_fetch_array($run_get_franc_d)) {
                        $fran_phone = $row_get_fram['Fran_Contact_Num'];
                        $twit = $row_get_fram['Twitter'];
                        $iii++;

HTML

   ......
    <td class='phn_dets'>
                        <p id='phn_title'>Problems ordering?</p>
                        <p id='phn_numb'><?php echo $fran_phone ?></p>
                    </td> 
                    <td class='collapse'>
                        <img src='./Images/franc_dets_twitter.png'  height='50' width='50' alt='Twitter logo'>    
                    </td>


                    <td class='twitter_dets'>
                        <p id='sm_title'>Social media</p>
                        <a id='sm_twit' href='https://twitter.com/<?php echo $twit ?>'>@<?php echo $twit ?></a>
                    </td>

                     <td class='collapse'>
                     <img src='./Images/franc_dets_fb.png'  height='50' width='50' alt='Facebook logo' >    
                    </td>
                    <td class='fb_dets'>

                <a id='sm_fb' href='https://www.facebook.com/<?php echo $fb; ?>'><?php echo $fb; ?></a>

1 个答案:

答案 0 :(得分:3)

你在while循环中声明$ twit。如果您的查询未返回任何结果,则永远不会定义$ twit,因此您会看到通知。在您的情况下,我看到了即使数据库中有数据也无法获得结果的2个原因:

  1. 您的网址和查询中都有引号,这可能会发生冲突并导致查询失败。
  2. 您将查询放在mysqli_stmt_execute()中,它需要一个Mysqli语句,而不是字符串。你必须在mysqli_prepare()中传递你的查询。然后将结果放在mysqli_stmt_execute()
  3. 确保正确处理没有返回结果的情况,这可以很简单,在while循环之外给$ twit一个默认值,或者告诉用户没有结果。

    此外,将变量放入查询的方式会使您的网站容易受SQL injection攻击。我建议你阅读这个主题。使用准备好的查询与占位符。请参阅PHP manual

    中的示例
相关问题