从数据库中检索数据会产生错误

时间:2016-03-13 11:42:20

标签: php mysql database

任何人都可以帮我吗?我的代码不会运行,我无法弄清楚为什么不。

>>> s = '78 56 78 1 7 '
>>> for n in (int(x) for x in s.split()):
...   print(n)
...
78
56
78
1
7
>>>

连接正在工作且处于活动状态,数据库名称为&行名称是正确的。

3 个答案:

答案 0 :(得分:1)

试试这个

 $result = mysql_query("SELECT * FROM planten WHERE naam='".$naam."'") or die(mysql_error());

答案 1 :(得分:1)

我认为问题出在您的查询语句中。由于$ naam是字符串,因此您需要使用引号将字符串括在查询中。请按照以下方式填写查询语句,然后尝试:

 $result = mysql_query("SELECT * FROM `planten` WHERE `naam` ='$naam'");

答案 2 :(得分:0)

我猜你的$ naam应该是一个字符串。你应该逃避并引用它。否则,SQL会将其解释为虚假列名。

if (isset($_GET['naam']))
{
  // query db
  $naam = mysql_real_escape_string($_GET['naam']);
  $result = mysql_query("SELECT * FROM planten WHERE naam='$naam'")
    or die(mysql_error()); 
  ...

如果你use PDO with SQL query parameters,这会更安全,更容易。无需逃避任何事情或担心引用,因为它们都是通过使用参数为您完成的。

if (isset($_GET['naam']))
{
  // query db
  $sql = "SELECT * FROM planten WHERE naam=?";
  $stmt = $pdo->prepare($sql);
  $stmt->execute([$_GET['naam']]);
  ...

FYI旧的" mysql_connect()" API在PHP 5。5(2013年6月)中已弃用,并已在PHP 7。0(2015年12月)中删除。见http://php.net/manual/en/mysqlinfo.api.choosing.php

我建议使用PDO。