我想知道MySQLi中是否有一个函数可以让我寻找包含单引号的单词。
一个例子比数百个解释要好,就是这样:
->首先 我收到一个要在PHP中搜索的字词(例如:示例的引号) 我有一个函数可以从任何收到的文本字符串中删除所有引号(') 然后我在MySQL数据库中执行搜索,但是MySQL数据库中的值包含QUOTE。
所以,我收到这样的数据:
$text_to_search = "Examples containing quote"; // Removed the quote
Column in database = "Example's containing quote";
如何在数据库中删除引号,以便可以将其与删除了引号的文本字符串进行比较?
在我的情况下,SOUNDEX
是否可以工作?
先谢谢了。
答案 0 :(得分:0)
您可以有条件地检查字符串的两个版本。根据单引号的存在查询一个或两个值。
未经测试的代码:
$config = ['localhost', 'root', '', 'dbname'];
$search = "Examples containing quote";
$values = [$search];
if (strpos($search, "'") !== false) {
$values[] = str_replace("'", "", $search);
}
$count = sizeof($values);
$placeholders = implode(',', array_fill(0, $count, '?'));
$param_types = str_repeat('s', $count);
if (!$conn = new mysqli(...$config)) {
echo "MySQL Connection Error: <b>Check config values</b>"; // $conn->connect_error
} elseif (!$stmt = $conn->prepare("SELECT * FROM tablename WHERE columnname IN ($placeholders)")) {
echo "MySQL Query Syntax Error: <b>Failed to prepare query</b>"; // $conn->error
} elseif (!$stmt->bind_param($param_types, ...$values)) {
echo "MySQL Query Syntax Error: <b>Failed to bind placeholders and data</b>"; // $stmt->error;
} elseif (!$stmt->execute()) {
echo "MySQL Query Syntax Error: <b>Execution of prepared statement failed.</b>"; // $stmt->error;
} elseif (!$result = $stmt->get_result()) {
echo "MySQL Query Syntax Error: <b>Get Result failed.</b>"; // $stmt->error;
} else {
$resultset = $result->fetch_all(MYSQLI_ASSOC);
echo "<div>Numrows: " , sizeof($resultset) , "</div>";
foreach ($resultset as $row) {
echo "<div>Row: {$row['columnname']}</div>";
}
}