连接有效,我没有收到连接错误。但是当我运行脚本时,我得到一个未定义的索引错误,它输出" 0结果"虽然我的桌子是肯定的填充,我正在寻找我知道的东西在桌子上。
我使用MySQL工作台管理数据库和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";
}
答案 0 :(得分:4)
我的建议是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
。如果要匹配String的一部分,则需要使用%
符号。
例如:
SELECT * FROM book_table WHERE Title LIKE "%goodbook%"
它将返回所有具有“goodbook”的行作为标题的一部分。
答案 1 :(得分:2)
你可以这样试试。由于您使用了mysqli_*
,我已将其编写为语句并bind_param
。
注意:未经测试。所以可能需要调整一下。
$param = '$input';
$sql= $conn->prepare("SELECT * FROM book_table WHERE Title LIKE ? OR Author LIKE ? OR Barcode LIKE ?");
$sql->bind_param("s", $param);
$sql->execute();
if($res->num_rows > 0) {
while ($row = $res->fetch()) {
echo "<br>Title: " . $row["Title"]. " - Author: " . $row["Author"];
}
} else {
echo " <br> 0 results";
}