WHERE条件在MySql中不起作用

时间:2016-02-28 23:24:41

标签: php mysql

这个问题让我发疯了。 我有一个MySql查询,除非我使用WHERE子句,否则它可以正常工作。我正在寻找超过5个小时的答案,并没有解决它。 这是我的代码:

<?php

   $artigo = $_GET["id"]; // Here goes the Code of the selected product in escolar.php

  $con=mysqli_connect("host","user","mypw","mytable");
    // Check connection
    if (mysqli_connect_errno())
      {
        echo "Falha na Ligação à Base de Dados: " . mysqli_connect_error();
      }

    $result = mysqli_query($con,"SELECT * FROM Escolar WHERE Code = $artigo");

        $titulo = $row['TITULO_ESP'];
        $descricao = $row['DESCRIPTION_ESP'];
        $imagem = "http://www.esferinfinita.es/images/imagens_artigos/" . $artigo . ".png" ;

 mysqli_close();
?>

我得到的信息是:

  

警告:mysqli_close()预计在第18行的/home/esferin2/public_html/ficha_escolar.php中只提供1个参数0

我已经尝试过使用If条件,但问题是一样的。

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

  

“弗雷德在第一次就是对的。非常感谢你帮助我.-- FerPessoa”

所以我会回答我的意见。

  

var_dump($ artigo);显示为什么?你也没有用$ row做任何事情。 - Fred -iii - ”

OP:

  

“$ artigo是一个字符串。在数据库中是varchar类型 - FerPessoa”

最初怀疑,$artigo子句中的WHERE变量是注释中所述的字符串,因此必须引用它。

阅读有关字符串文字的手册:http://dev.mysql.com/doc/refman/5.7/en/string-literals.html

WHERE Code = '$artigo'

然后,您没有对查询的其余部分执行任何操作,$row,您需要循环查询以获取/显示结果。

<强> OP:

  

注意:未定义的变量:第17行/home/esferin2/public_html/ficha_escolar.php中的行注意:未定义的变量:第18行的/home/esferin2/public_html/ficha_escolar.php中的行

我回复的地方:

  

“这里的错误是由于没有循环查询引起的。即:($ row = whatever_loop_function_you_want_to_use ....){...}”

您最终使用while($row = mysqli_fetch_array($result)

  

“好吧,我做的是插入这段代码:while($ row = mysqli_fetch_array($ result))并且它正在工作.Fred是第一次做对了。非常感谢你帮助我有了这个。 - FerPessoa“

现在,关于:

  

警告:mysqli_close()预计在第18行的/home/esferin2/public_html/ficha_escolar.php中只提供1个参数0

mysqli_close()函数要求在其中传递db连接变量:

根据手册

mysqli_close($con)

程序风格

  

bool mysqli_close(mysqli $ link)

如果来自用户输入,您的当前代码对SQL injection开放,或者是否应该有任何用户互动。

使用mysqli_* with prepared statementsPDOprepared statements

答案 1 :(得分:0)

问题不在于您的SQL语句。

您在程序上看到使用MySQLi。

所以你必须为MySQLi close命令提供连接变量。

请参阅:http://php.net/manual/en/mysqli.close.php

另请参阅:http://php.net/manual/en/function.mysql-query.php获取结果集并使用MySQL获取函数循环结果集。

每次都需要遍历结果集。只有一个结果或多个结果没有区别。

试试这个。 (未测试)

<?php

   $artigo = $_GET["id"]; // Here goes the Code of the selected product in escolar.php

  $con=mysqli_connect("host","user","mypw","mytable");
    // Check connection
    if (mysqli_connect_errno())
      {
        echo "Falha na Ligação à Base de Dados: " . mysqli_connect_error();
      }

    $result = mysqli_query($con,"SELECT * FROM Escolar WHERE Code = $artigo");
    if($result) {
        while ($row = $result->fetch_object()){
            $titulo = $row['TITULO_ESP'];
            $descricao = $row['DESCRIPTION_ESP'];
            $imagem = "http://www.esferinfinita.es/images/imagens_artigos/" . $artigo . ".png" ;
        }
    }

 mysqli_close($con);
?>