【问题标题】:PHP variable is not passing to another page with GETPHP变量没有通过GET传递到另一个页面
【发布时间】:2016-09-01 10:57:26
【问题描述】:

我有这个用于从数据库返回数据的while循环代码

if (mysqli_num_rows($result) > 0) {
    while ($row = mysqli_fetch_array($result)) {
        (some not important lines...)
        echo "<div><a href='remove.php?id=<?php echo ".$row['id'].";?>'>remove record</a></div>";

我想通过 GET 将 id 变量传递给我的 remove.php

<?php
    include '../db.php';
    $id = $_GET['id'];
    $con = mysqli_connect($host, $user, $pass, $db);
    mysqli_query($con, 'DELETE FROM zapisy WHERE id='$id';')
    mysqli_close($con);
?>

但是每次我点击我的链接它都会重定向到

remove.php?id=<?php%20echo%2042;?> // <?php echo 42;?> without all that mess, id is good

留下我认为不应该在这里的 php 标签,并且不将我的变量传递到另一个页面 - 第一个问题;第二——php返回

Parse error: syntax error, unexpected T_VARIABLE in .../admin-panel/remove.php on line 5

这告诉我 mysql 拼写附近的变量有问题,但我一直在寻找答案,但什么也没有。我将 ' ' 更改为 "" 并相反,什么都没有。还是因为变量没有传递值并且它是空的?

如果有人能帮助我或为我指明正确的道路,我将非常感激,因为我被困在这一点上,而我才刚刚开始编码。

【问题讨论】:

  • echo "&lt;div&gt;&lt;a href='remove.php?id=&lt;?php echo ".$row['id'].";?&gt;'&gt;remove record&lt;/a&gt;&lt;/div&gt;"; 更改为echo "&lt;div&gt;&lt;a href='remove.php?id=".$row['id']."'&gt;remove record&lt;/a&gt;&lt;/div&gt;";
  • 您使用的是mysqli,但为什么您不使用准备好的语句; 为什么? 你的 sql 语句是 sql 可注入的 SQL Injection
  • @Albzi 和 2x .,因为有单引号,而不是双引号。
  • @execor,你还没有得到答案吗?

标签: php mysql get


【解决方案1】:

您的第一个错误是因为您不应该在已打开的 php 标签内打开 php 标签。

应该是这样的:

echo "<div><a href='remove.php?id=".$row['id']."'>remove record</a></div>"; 

第二个错误是因为您的代码中缺少; 并混淆了引号。将您的查询更改为此。

mysqli_query($con, "DELETE FROM zapisy WHERE id='$id'");

旁注:由于您使用的是 mysqli,因此您应该使用准备好的语句。

这是一个简单的例子:

$stmt = mysqli_prepare($con, "DELETE FROM zapisy WHERE id=?");
mysqli_stmt_bind_param($stmt, 'i', $id);
mysqli_stmt_execute($stmt);

【讨论】:

  • 还有 2x .。必须是mysqli_query($con, 'DELETE FROM zapisy WHERE id='.$id.';');,因为是单引号,不是双引号。
  • 是的,你是对的@Legionar,不过,当我阅读你的评论时,我刚刚编辑它以使用双引号,谢谢哥们:)
【解决方案2】:

当你已经在 PHP echo 函数中时,不要再次使用 &lt;?php

改变这个:

echo "<div><a href='remove.php?id=<?php echo ".$row['id'].";?>'>remove record</a></div>";

到:

echo "<div><a href='remove.php?id=".$row['id']."'>remove record</a></div>"; 

而且您还缺少 2x .(因为有单引号,而不是双引号)和 ;,更改此:

mysqli_query($con, 'DELETE FROM zapisy WHERE id='$id';')

到:

mysqli_query($con, 'DELETE FROM zapisy WHERE id='.$id.';');

【讨论】:

    【解决方案3】:

    试试这个

     echo "<div><a href='remove.php?id=".$row['id']."'>remove record</a></div>"; 
    

    【讨论】:

      【解决方案4】:

      你在搞乱 HTML 和 PHP。

      需要修改:

      1) 您已经添加了两次echo。不需要,因为您已经在打印字符串了。

      2) 过多的&lt;?php?&gt; 标签。

      echo "<div><a href='remove.php?id=".$row['id']."'>remove record</a></div>";
      

      【讨论】:

      • 你所做的刚刚删除了echo echo "&lt;div&gt;&lt;a href='remove.php?id=&lt;?php ".$row['id']."'&gt;remove record&lt;/a&gt;&lt;/div&gt;";
      • @Epodax,很抱歉我匆忙发布了错误的答案。我已经更正了答案。请阅读。
      • @Epodax,谢谢。我不会盲目地做任何假设。
      【解决方案5】:

      将您的代码更改为:

      if(mysqli_num_rows($result) > 0)
      {
          {
          while($row = mysqli_fetch_array($result)){
              (some not important lines...)
      ?>
              <div><a href='remove.php?id=<?php echo $row['id'];?>'>remove record</a></div>
      <?php }
      }
      

      if(mysqli_num_rows($result) > 0)
          {
              {
              while($row = mysqli_fetch_array($result)){
                  (some not important lines...)
      echo "<div><a href='remove.php?id=".$row['id']."'>remove record</a></div>"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-01
        • 1970-01-01
        • 2012-04-25
        • 1970-01-01
        • 2014-12-01
        相关资源
        最近更新 更多