В вашем коде есть неприятный недостаток SQL-инъекций. Убедитесь, что вы избегаете своих ценностей! Вот как я бы посоветовал вам избежать вашего кода и вставить его в вашу базу данных:
<?php
// Use isset to determine whether there is a value present
if(isset($_POST['oldlist'])){
$oldlist = $_POST['oldlist'];
// Escape your data. Makes sure someone inject code that can jack your DB
$oldlist_esc = mysql_real_escape_string($oldlist);
$sql = "SELECT * FROM test WHERE user='$oldlist_esc'";
$result = mysql_query($sql) or die(mysql_error());
if(mysql_num_rows($result) > 0)
echo "exists";
else {
// I'll assume your data is line-delimited
$oldlist = explode("\n", $oldlist);
$new_oldlist = $oldlist;
foreach($oldlist as $key=>$value) {
$new_oldlist[$key] = explode(" ", $value, 1); // I'll assume each line is space-delimited
// Escape the new data
foreach($new_oldlist[$key] as $new_key=>$new_value)
$new_oldlist[$kew_key] = mysql_real_escape_string($new_value);
}
$sqlq = "INSERT INTO test (`user` ,`file`) VALUES ";
// Build out the query
$c = 0;
foreach($new_oldlist as $value) {
if($c++ > 0) $sqlq .= ',';
$sqlq .= '("';
$sqlq .= implode('","', $value);
$sqlq .= '")';
}
$add = mysql_query($sqlq) or die(mysql_error());
if($add)
echo "done";
else
echo "failed";
}
}
?>
Можно использовать переменные внутри строк (т. Е. «Asdfasdf $ myvar asdfasdf»), но не забывайте экранировать данные, используя mysql_real_escape_string
. Это удерживает пользователя от ввода данных, таких как:
';DELETE FROM test WHERE true;--
, которая эффективно уничтожит вашу базу данных. Надеюсь, это поможет!