Как сохранить URL-адреса в базе данных MYSQL из массива - PullRequest
1 голос
/ 07 октября 2009

Каков наилучший способ сохранить URL или символы в базе данных MYSQL.

Я видел, что это используется "{$ htmlOutputArray [1]}" а затем еще где это "$ htmlOutputArray [1]" и некоторые другие места делают то, что я сделал ниже ... но что лучше?

Пока у меня есть: (пример кода)

$html = "034251\nhttp://stackoverflow.com/questions/ask"
$htmlOutputArray = explode("\n", "$html");

$htmlOutput = $htmlOutputArray[0];
$postIDOutput = $htmlOutputArray[1];
$con = mysql_connect('localhost', 'user', 'pass') or die('Could not connect: ' . mysql_error());
#echo 'Connected successfully';
mysql_select_db("dbName", $con);
mysql_query("UPDATE tableName SET PostidINT='$postIDOutput', URLofPostTXT='$htmlOutput' WHERE id='$unID'");
mysql_close($con);

Ответы [ 2 ]

4 голосов
/ 07 октября 2009

Прежде всего вы должны изучить опасности SQL-инъекции и как вы можете предотвратить это.

Вот как вы можете сделать это, так и более безопасная версия.

mysql_select_db("dbName", $con);

$sql = sprintf("UPDATE tableName SET PostidINT=%d, URLofPostTXT='%s' WHERE id=%d",
     mysql_real_escape_string($htmlOutputArray[1]), 
     mysql_real_escape_string($htmlOutputArray[0]), 
     mysql_real_escape_string($unID));

mysql_query($sql);

mysql_close($con);

То, что mysql_real_escape_string () делает для предотвращения ввода небезопасных символов в вашу базу данных.

То, что sprintf () делает, форматирует вашу строку, поэтому, например, в переменные PostidINT и id будут введены только числа.

3 голосов
/ 07 октября 2009

Я бы проголосовал за подготовленные заявления (и mysqli):

$connection = new mysqli("localhost", "user", "pass", "db");
$statement = $connection->prepare("UPDATE tableName SET PostidINT=?, URLofPostTXT=? WHERE id=?");
$statement->bind_param("i", $postIDOutput);
$statement->bind_param("s", $htmlOutput);
$statement->bind_param("i", $unID);
$statement->execute();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...