读取文件内容并在其中附加一个字符串-SQL错误和mysql错误



当我运行代码时,我将面临以下两个错误:

mysql_num_rows()期望参数1是资源,布尔

这种情况发生在文件的罕见行中。其余的都很好。

您的SQL语法有错误;查看手册与您的MySQL服务器版本相对应,以便使用正确的语法第1行"t"附近

是的,我明白了,它很脆弱。可能是一些奇怪的角色造成了这个问题,但我真的可以编辑它们,因为我把单词保存到数据库中,以便对它们进行md5处理。

我假设mysql_real_escape_string将添加一些斜杠,这将给我另一个md5值。那么,我怎么能不编辑数据,同时确保脚本的安全呢?

require ("dbconnect.php");
$list = fopen("huge.txt","r");
//convert and save to db
while(!feof($list))
  {
  $word = fgets($list);
  //check if already in db.
  $check = mysql_query("SELECT id FROM `database` WHERE word='$word'") or 
  die(mysql_error());
  if (mysql_num_rows($check)==0)
     {
     //rest of the codes

我添加die()只是为了看看哪里出了问题。

对于问题1,如果只有一个数据库连接,则应该简单地不向mysql_num_rows()传递任何参数。

对于问题2,转义版本不应该产生不同的哈希,只要它已经保存到数据库中,然后再次从数据库中提取。一旦将转义字符串保存到数据库中,保存的版本就会有效地丢失转义字符。这就是为什么当您从数据库中提取转义值时看不到"they\are"的原因。

基本上,当您最初创建哈希时,应该为哈希输入使用字符串的非转义版本,然后转义可以保存到数据库的明文版本。然后,您可以随时从数据库中提取明文版本,rehash,它应该会创建一个匹配的哈希值。

相关内容

  • 没有找到相关文章

最新更新