mysqli中的搜索查询(不替换列中的单引号)

vh0rcniy  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(301)

我想知道mysqli中是否有一个函数允许我查找包含单引号的单词。
一个例子比百分百的解释更好,这里是:
->首先,我收到一个要在php中搜索的单词(例如:example's containing quote),我有一个函数可以从任何收到的文本字符串中删除所有引号('),然后我在mysql数据库中执行搜索,但是mysql数据库中的值包含引号。
我收到的数据如下:

$text_to_search = "Examples containing quote"; // Removed the quote
Column in database = "Example's containing quote";

如何删除数据库中的引号,以便将其与已删除引号的接收文本字符串进行比较?
SOUNDEX 对我的案子有用吗?
提前谢谢你。

8fsztsew

8fsztsew1#

您可以有条件地检查字符串的两个版本。根据单个引号的存在,查询一个或两个值。
未测试代码:

$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>";
    }
}

相关问题