Привязка PHP MYSQL для подготовки оператора с использованием mysqli работает нормально, когда я использую такой запрос
if ($stmt = $dbh->prepare("SELECT url, title, fulltxt FROM links WHERE id = ? ")){// do something}
но это не работает, когда я использую этот запрос
if ($stmt = $dbh->prepare("SELECT url, title, fulltxt FROM links WHERE MATCH(fulltxt) AGAINST(?) ")) {//do something}
Я недостаточно опытный программист. Таким образом, любое тело может сказать мне правильный способ использования «MATCH () AGAINST ()» с вопросительным знаком в запросе для значения привязки.
Новый полный код на основе pastebin:
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body>
<?php
error_reporting(-1);
// here the db details
$query = "%".$_GET['q']."%";
// Connecting to the server and selecting database
$dbh = new mysqli($host, $user, $password, $database);
if ($dbh->connect_error) {
echo 'Unable to connect to database '. $dbh->connect_error;
} else {
// run query to select records
if ($stmt = $dbh->prepare("SELECT url, title, fulltxt FROM links WHERE fulltxt LIKE ?")) {
// binding user-supplier input $class to the parameter as string
$stmt->bind_param("s", $query);
// executing the statement
$stmt->execute();
// binding the table columns Name and Email to the $Name and Email parameters respectively.
$stmt->bind_result($URL, $TITLE, $FULLTXT);
/* fetch associative array */
while ($stmt->fetch()) {
echo $URL. ' -- '. $TITLE. '<br />';
}
} else {
echo "Prepare failed: (" . $dbh->errno . ") " . $dbh->error;
}
}
?>
</body>
</html>
Проблема была исправлена заменой MATCH на LIKE и конкатенацией переменной с процентными символами на обеих сторонах.
Других решений пока нет …