【问题标题】:Beginner PHP code does not work as expected [duplicate]初学者 PHP 代码无法按预期工作 [重复]
【发布时间】:2017-01-01 03:44:45
【问题描述】:

我一直在尝试修复我的代码,但它根本不起作用。我有一个本地服务器,它确实可以工作(在我的 macbook 上使用 Mamp)我在我的“hexameter”数据库中编辑了一个名为“forms”的小表。

这是我的代码:

连接.php

<?php
$servername = "";
$username = "";
$password = "";

$conn = new mysqli($servername, $username, $password);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
echo "Connected successfully";
?> 

连接确实有效!

输入:

<!DOCTYPE html>
<html>
<body>

<form action="http://localhost:8888/index.php" method="GET">
Hexameter: <input type="text" name="Hexameter"><br>
<input type="submit" name"Eingabe">
</form>

</body>
</html>

index.php:

<!DOCTYPE html PUBLIC>
<html >
<head>
    <title>Search results</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link rel="stylesheet" type="text/css" href="style.css"/>
</head>
<body>
<?php

$query = $_GET['Hexameter'];

$query = htmlspecialchars($query); 

$query = mysql_real_escape_string($query);

$raw_results = mysql_query("SELECT * FROM forms
        WHERE `text` LIKE '%".$query."%')" or die(mysql_error());


if(mysql_num_rows($raw_results) > 0){ 

    while($results = mysql_fetch_array($raw_results)){

            echo "<p><h3>".$results['title']."</h3>".$results['text']."            

 </p>";
    }
} else{ 
    echo "No results";
}

}

?>
</body>
</html>

我总是访问 index.php,但没有显示任何内容。

【问题讨论】:

  • 这是怎么回事?
  • mysql_real_escape_string 不。您打开了与mysqli 的连接。您正在混合 API。切换到 PDO,以免混淆 mysql_ 和 mysqli_。
  • @developerwjk - 我正要打字。你比我先得到它。
  • 另外,看起来你有一个额外的}
  • 你使用的是哪个版本的php?

标签: php html mysql mysqli


【解决方案1】:

使用 mysqli 时,必须将连接字符串添加到查询中。

在你的情况下:

 $raw_results = mysqli_query($conn, "SELECT * FROM forms
    WHERE `text` LIKE '%".$query."%'") or die(mysqli_error());

试试看。

【讨论】:

    【解决方案2】:

    正如几位评论者所说,您使用mysqli 连接数据库,然后调用mysql 函数。更糟糕的是,在 index.php 中的任何地方都没有引用数据库连接。您在 mysql_query 调用中省略了 $link_identifier 参数。

    将 index.php 中的调用切换为 mysqli 调用,并确保您使用的是有效的 $conn

    【讨论】:

      【解决方案3】:

      在对数据库执行查询之前,您应该首先要求connection.php

      index.php添加这一行:

      require "connection.php";
      

      之后mysqli_query函数中需要连接,所以添加$conn作为参数:

      $raw_results = mysqli_query($conn, "SELECT * FROM forms
      WHERE `text` LIKE '%".$query."%')" or die(mysqli_error());
      

      我认为这会解决你的问题。

      【讨论】:

        猜你喜欢
        • 2013-06-23
        • 1970-01-01
        • 1970-01-01
        • 2014-12-06
        • 2015-09-27
        • 1970-01-01
        • 2020-04-23
        • 2013-07-27
        • 1970-01-01
        相关资源
        最近更新 更多