Итак, я понятия не имею, что это за сделка... Следующий код ниже вызывает ошибку 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 ("'","'", $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);
У вас есть функция PHP в запросе MYSQL.
Я не верю, что вы можете просто переместить функцию вне кавычек, но вам нужно пройти все значения:
т.
foreach($values as $key=>$value){
$values[$key] = mysql_real_escape_string($value);
}
Добавьте это, чтобы избежать всех значений, затем измените свой запрос, чтобы удалить функцию PHP.
Кроме того, вам нужно также развязать кавычки, а не только запятые.
Между строками explode()
и implode()
, вы должны быть mysql_real_escape_string()
-имя каждого из значений в $arr
. Функция должна выполняться в PHP, а не отправляться в MySQL для ее выполнения.
Вы могли бы распечатать (или зарегистрировать) свой сгенерированный оператор SQL, и вы, вероятно, заметили бы проблему.
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) .')';