php - 在我的 php 脚本中,我与服务器的连接有效,但我的 sql 查询不起作用

标签 php mysql apache server

连接正常,我没有收到连接错误。但是,当我运行脚本时,我收到 undefined index 错误,并且它输出“0 结果”,尽管我的表肯定已填充,并且我正在搜索我知道表中的内容。

我使用 MySQL Workbench 来管理数据库,并使用 apache (xampp) 来托管本地服务器并运行 PHP 脚本。这可能是问题所在吗?有没有办法让我将数据库托管在与 apache 网站相同的位置?

$sql="SELECT * FROM book_table WHERE Title LIKE $input OR Author LIKE $input OR Barcode LIKE $input";
$result = $conn->query($sql);

if ($result) {

 while($row = $result->fetch_all()) {
     echo "<br>Title: " . $row["Title"]. " - Author: " . $row["Author"];
 }
} else {
 echo " <br> 0 results";
}

最佳答案

我给你的建议是PDO :

$dsn = 'mysql:host=localhost;dbname='.$dbname;//$dbName is the name of your database
$user = 'root';
$pass = '123';//use your login information here
$db = new PDO($dsn, $user,$pass);
$query = "SELECT * FROM book_table WHERE Title LIKE :info OR Author LIKE :info OR Barcode LIKE :info";
$ps = $db->prepare($query);
$ps->bindValue(':info', $input)
$ps->execute();
$result = $ps->fetchAll(PDO::FETCH_ASSOC);

//iterate over result
if (!empty($results)){
    foreach ($result as $row) {
        echo "<br>Title: " . $row["Title"]. " - Author: " . $row["Author"];
    }
} else {
    echo " <br> 0 results";
}

另外,请记住以正确的方式使用 MySQL LIKE。当你想匹配字符串的一部分时,你需要使用%符号。

例如:

SELECT * FROM book_table WHERE Title LIKE "%goodbook%"

它将返回标题中包含“goodbook”的所有行。

关于php - 在我的 php 脚本中,我与服务器的连接有效,但我的 sql 查询不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40307649/

相关文章:

php - 跟踪用户在页面上的 View

php - 限制用户从网站下载的数量,并在达到限制时重定向?

php - 无法使用 mssql_connect 从 php 连接到 mssql 服务器

mysql - 列出注册到特定事件的成员

Android 本地主机拒绝连接

php - 自动为 MySQL 中的所有表设置 auto_increment

php - 在 Laravel 中用于本地和生产的单个 Redis 配置?

java - 缩短 JDBC 代码

PHP与html混合无输出

Apache 上的 Django - 防止 504 网关超时