Php 选择数据库中包含的单词

Php 选择数据库中包含的单词,php,mysql,Php,Mysql,如果用户的名字包含一些插入数据库表的字符串,我想锁定用户的注册。我使用了以下代码: $repWor = mysql_query("SELECT * FROM reportedWord WHERE Word LIKE '%$username%'"); if (strpos($username, $repWor) !== false) { echo 'The name contains characters or words not allowed.'; } 但它不起作用。如何修复它?

如果用户的名字包含一些插入数据库表的字符串,我想锁定用户的注册。我使用了以下代码:

$repWor =  mysql_query("SELECT * FROM reportedWord WHERE Word LIKE '%$username%'");

if (strpos($username, $repWor) !== false) {
    echo 'The name contains characters or words not allowed.';
}

但它不起作用。如何修复它?

在查询之后,您需要使用类似于
mysql\u fetch\u array的东西

<?php
$repWor = mysql_query("SELECT * FROM reportedWord WHERE Word LIKE '%$username%'",$cnx);

$dat = mysqli_fetch_array( $repWor ); // <====================

if (strpos($username, $dat["Word"] ) !== false) { echo 'The name contains characters or words not allowed.';
?>

使用mysql\u查询返回一个结果资源。它不会返回基于SQL的字符串或数组。必须将mysql\u查询与mysql\u fetch\u行或mysql\u fetch\u assoc组合使用

一个完整的例子可以在

然后将代码转换为:

$search = mysql_real_escape_string($username);
$query  = "SELECT * FROM reportedWord WHERE Word LIKE '%{$search}%'";
$result = mysql_query($query, $connection);
$row    = mysql_fetch_assoc($result);

if (strpos($username, $row['reportedWord']) !== false) {
    echo 'The name contains characters or words not allowed.';
}
<> P>你有很长的路要走,然后得到一个健壮的解决方案,你也许应该考虑使用MySQL并遵循快速入门指南:


或者更进一步,使用Doctrine之类的库

不要使用
mysql.*
函数。从PHP7.0开始,它们就被删除了。另外,请确保修复您在那里遇到的安全漏洞。。。阅读有关SQL注入RTFM的更多信息:。mysql_query返回一个语句句柄,而不是一个可以搜索的字符串。我稍后会修复sql注入,首先我想做我的网站的基础。我讨厌人们说“我没走那么远…”或“这个网站不会公开…”或“它只供学校使用,所以安全无所谓…”。如果老师和教授从一开始就不谈论安全问题,那他们就是做错了。挑战他们。他们正在教授草率而危险的编码实践,学生们以后将不得不放弃这些实践。我也讨厌人们说“我以后再添加安全性…”或“安全性现在不重要…”。如果你第一次没有时间做对,你什么时候才能找到时间来添加它?你忘记了mysqli_查询中的连接句柄,所以没有。。。这不像只在函数调用名中添加一个
i
那么简单。您不能只切换到
mysqli
函数。其中一些,包括连接,需要不同的语法。请不要猜。如果我用“motherf--ker”这个词,它就行了,但是如果我用“123motherf--ker123”这样的词,它就行不通了。也许“%”有问题?
$search = mysql_real_escape_string($username);
$query  = "SELECT * FROM reportedWord WHERE Word LIKE '%{$search}%'";
$result = mysql_query($query, $connection);
$row    = mysql_fetch_assoc($result);

if (strpos($username, $row['reportedWord']) !== false) {
    echo 'The name contains characters or words not allowed.';
}