Чтение содержимого файла и добавление к нему строки - ошибки SQL и ошибки mysql - PullRequest
1 голос
/ 26 марта 2012

Когда я запускаю свой код, я сталкиваюсь со следующими 2 ошибками:

mysql_num_rows () ожидает, что параметр 1 будет ресурсом, логический

Это случается редкостроки файла.Остальные из них работают просто отлично.

У вас ошибка в синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с 't' в строке 1

Да, я вижу, что он уязвим.Вероятно, некоторые странные признаки составляют проблему, но я действительно могу их отредактировать, потому что я сохраняю слова в БД для md5ing их.

Я предполагаю, что 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 Ответ

1 голос
/ 26 марта 2012

Для вопроса 1 вы просто не должны передавать какой-либо аргумент mysql_num_rows (), если у вас есть только одно соединение с базой данных.

Для вопроса 2 экранированная версия не должна создавать другой хеш, пока онабыл сохранен в базе данных, а затем снова извлечен из базы данных.Как только экранированная строка сохраняется в базе данных, сохраненная версия фактически теряет escape-символы.Вот почему вы не видите «они», например, когда вы извлекаете экранированные значения из базы данных.

По сути, когда вы изначально создаете хэш, вы должны использовать не экранированную версиюстрока для ввода хеша, затем экранируйте текстовую версию, которая затем может быть сохранена в базе данных.Затем вы можете в любой момент извлечь версию открытого текста из базы данных, перефразировать, и она должна создать соответствующее значение хеш-функции.

...