2016-07-08 9 views
-1

名前にデータベースのテーブルに文字列が挿入されている場合、そのユーザーの登録をロックしたいと思います。私はこのコードを使用しました:データベースに含まれている単語を選択

$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_fetch_arrayのようなものを使用する必要があるクエリの後

+3

'mysql_ *'関数を使用しないでください。彼らはPHP 7.0から削除されました – apokryfos

+0

私はPHP 5.3を使用しています – Cos8o

+0

また、そこに行っているそのセキュリティホールを修正してください... SQLインジェクション[here](http://www.w3schools。 com/sql/sql_injection.asp) – Confiqure

答えて

2

<?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.'; 
?> 

@apokryfosはあなたがmysqliに変更する必要があり、言ったように、それは簡単です:するmysql_queryを使用して

<?php 

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

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

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

?> 
+1

mysqli_queryで接続ハンドルを忘れてしまったので、関数呼び出し名に 'i'を追加するだけでは簡単ではありません。 –

+0

'mysqli_ *'関数に切り替えることはできません。接続を含むそれらのいくつかは、別の構文を必要とします。 –

+1

推測しないでください。 –

1

は結果リソースを返します。 SQLに基づいて文字列または配列を返しません。 mysql_fetch_rowまたはmysql_fetch_assocの組み合わせでmysql_queryを使用する必要があります。

$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.'; 
} 

あなたは堅牢なソリューションを取得する前には長い道のりがあり、おそらくmysqliの使用を検討してください:

完全な例は、これは、その後にコードをオン http://php.net/manual/en/function.mysql-fetch-assoc.php

で見つけることができますクイックスタートガイドに従ってください:http://php.net/manual/en/mysqli.quickstart.statements.php

さらに進んでDoctrineなどのライブラリを使用してくださいhttp://www.doctrine-project.org/

+0

私は "motherf - ker"を置くと動作しますが、 "123motherf - ker123"のようなものを置くと動作しません。おそらく "%"に何らかの問題がありますか? – Cos8o