这个问题让我发疯了。
我有一个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条件,但问题是一样的。
有人可以帮助我吗?
答案 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 statements或PDO与prepared 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);
?>