ОШИБКА: проверьте версию [...] MySQL-сервера для правильного синтаксиса для использования рядом - PullRequest
0 голосов
/ 20 октября 2010

Так что я понятия не имею, в чем дело ... следующий код, приведенный ниже, вызывает ошибку 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);

Ответы [ 3 ]

1 голос
/ 20 октября 2010

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

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

0 голосов
/ 20 октября 2010

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

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

то есть.

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

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

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

0 голосов
/ 20 октября 2010

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) .')';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...