ОШИБКА: проверьте руководство […] версии сервера MySQL на предмет правильного синтаксиса для использования рядом с '

0

Итак, я понятия не имею, что это за сделка... Следующий код ниже вызывает ошибку mysql, следуя коду.

$fcontents = file("inventory.csv");

for ($i = 1; $i < sizeof($fcontents); $i++) { 
    $line = trim($fcontents[$i]);
    $arr = explode(',', $line);
    $values = implode(',', $arr);
    $values = str_replace('&', 'and', $values);

    $sql = 'INSERT INTO inventory (dealerid, name, vin, stock, newused, year, ' .
           'make, model, series, body, color, intcolor, price, retailprice, ' .
           'miles, transmission, engine, restraint, certified, photourl, ' .
           'comments, flag, options, citympg, hwympg) ' .
           'VALUES mysql_real_escape_string(' . $values . ')';
     mysql_query($sql);

     echo $sql.'<br><br>';
     if (mysql_error()) {
         echo mysql_error() .'<br><br>';
     }
}

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

RESOLVED!!!. Поэтому я хотел опубликовать решение для глупой, тупой одинарной кавычки, двойной сметы котировки при сбрасывании CSV файла в mysql... См. ниже.:

$fcontents = file("http://pathtofile.com/inventory.csv"); for($i=1; $i < sizeof($fcontents); $i++) { $line = trim($fcontents[$i]); $arr = explode(",", $line); $arr = str_replace ("'","&#39;", $arr); $values = implode("','", $arr); $values = str_replace("\"',",'\'",', $values); $values = str_replace(",'\"",',"\'', $values); $values = str_replace("&", "and", $values); $sql = "INSERT INTO vehicles.inventory (dealerid,name,vin,stock,newused,year,make,model,series,body,color,intcolor,price,retailprice,miles,transmission,engine,restraint,certified,photourl,comments,flag,options,citympg,hwympg) VALUES ('".$values."')"; mysql_query($sql);
  • 0
    Каков фактический запрос?
Теги:
insert

3 ответа

0
Лучший ответ

У вас есть функция PHP в запросе MYSQL.

Я не верю, что вы можете просто переместить функцию вне кавычек, но вам нужно пройти все значения:

т.

foreach($values as $key=>$value){
$values[$key] = mysql_real_escape_string($value);
}

Добавьте это, чтобы избежать всех значений, затем измените свой запрос, чтобы удалить функцию PHP.

Кроме того, вам нужно также развязать кавычки, а не только запятые.

  • 0
    Хорошо, вышеупомянутые предложения избавились от этой ошибки, но теперь я получаю эту чертову ошибку: количество столбцов не соответствует количеству значений в строке 1
  • 0
    Как говорится на этой странице ( htmlfixit.com/cgi-tutes/… ), ошибка заключается в том, что вы указываете больше столбцов, чем «VALUES». Убедитесь, что вы добавляете круглые скобки при развертывании массива.
Показать ещё 3 комментария
1

Между строками explode() и implode(), вы должны быть mysql_real_escape_string() -имя каждого из значений в $arr. Функция должна выполняться в PHP, а не отправляться в MySQL для ее выполнения.

Вы могли бы распечатать (или зарегистрировать) свой сгенерированный оператор SQL, и вы, вероятно, заметили бы проблему.

0

mysql_real_escape_string() - это функция PHP, но вы все еще находитесь в пределах строки, когда она появляется в вашем коде.

Попробуйте следующее:

$sql = 'INSERT INTO inventory (dealerid, name, vin, stock, newused, year, make, model, series, body, color, intcolor, price, retailprice, miles, transmission, engine, restraint, certified, photourl, comments, flag, options, citympg, hwympg) VALUES (' . mysql_real_escape_string($values) .')';

Ещё вопросы

Сообщество Overcoder
Наверх
Меню