Я использую JQuery Plugin Uploadify для загрузки файлов и сохраняю имя изображения с помощью пути в базу данных с помощью простого запроса mysql, а затем извлекаю его.
моя таблица базы данных MySQL использует следующие сущности,
id int(20)
image_url varchar(255)
Моя процедура хранения изображений такова, что я сначала переименую файл, даю ему уникальное имя и переместите его в нужный каталог. а затем сохранить имя изображения с помощью пути в базу данных.
в настоящее время с помощью простой инструкции mysql INSERT я храню одно имя файла.
Теперь я хочу загрузить массив имен изображений с помощью пути. или я хочу сохранить столько изображений, сколько хочу динамически в одну таблицу col image_url, по какой-то причине я планирую хранить 4 или более изображений, я хочу, чтобы все четыре изображения имели один конкретный номер идентификатора.
как это сделать?
Благодарю вас
Изменить 2
Я удалил предыдущие скрипты, здесь новый:
в основном то, что я хочу достичь, - это при вставке в базу данных, я хотел бы сохранить путь изображения с именами в виде массивов. так что я мог бы хранить столько изображений, которые хочу получить в конкретном id, например, id 1 будет иметь 3 изображения, id 2 будет иметь 5 изображений, id 3 будет иметь 4 изображения и т.д.
Лучший способ сделать это - добавить отдельную запись для каждого URL-адреса изображения. Вы также можете использовать одну запись и хранить все URL-адреса в виде массива, но поскольку вы храните это в базе данных, которая не очень полезна. Сохранение каждой записи по отдельности облегчает доступ и обновление данных.
Кроме того, убедитесь, что поле "id" в вашей таблице не является первичным ключом/автоматическим приращением. В противном случае вы не сможете использовать один и тот же идентификатор более одного раза. Я исправил это здесь:
// array with your images
$images = array('url1','url2','url3');
// determine a new id
$sql = "SELECT MAX(id) FROM images";
$res = mysql_query($sql);
list($id) = mysql_fetch_row($res);
// highest current id, plus one
$id++;
// now create a values array to insert in the database
$values = array();
foreach ($images as $image) {
$values[] = "($id, '".mysql_real_escape_string($image)."')";
}
// comma-separate the values
$values = implode(',',$values);
// run the query
$sql = "INSERT INTO images (id, image_url) VALUES $values";
mysql_query($sql);
Если вы хотите хранить массивы, лучше всего serialize
использовать данные и использовать unserialize
при его получении. Пример:
$images = array(...);
$images = serialize($images);
$sql = "INSERT INTO images (image_url) VALUES ($images)";
Чтобы добавить изображения, сначала необходимо извлечь данные, неэриализовать массив, обновить массив новыми изображениями, снова сериализовать его, обновить запись в базе данных.
Это не normalized хорошо, но вы могли бы сделать это:
<?php
// ... your code here ...
try {
$dbh = new PDO( 'mysql:dbname=' . $your_database_name . ';host=' . $your_database_host, $your_database_username, $your_database_password );
} catch ( PDOException $e ) {
throw new Exception( 'Database connection failed: ' . $e->getMessage() );
}
$stmt_insert = $dbh->prepare("INSERT INTO images('url_array') VALUES (:image_array_json)");
$stmt_insert->execute( array(':image_array_json', json_encode( $image_array )) );
// ... et cetera ...
?>
... и получить массив (если вы знаете image_id
):
<?php
// ... your code here ...
try {
$dbh = new PDO( 'mysql:dbname=' . $your_database_name . ';host=' . $your_database_host, $your_database_username, $your_database_password );
} catch ( PDOException $e ) {
throw new Exception( 'Database connection failed: ' . $e->getMessage() );
}
$stmt_retrieve = $dbh->prepare("SELECT url_array FROM images WHERE image_id=:image_id");
$stmt_retrieve->execute( array(':image_id', $image_id) );
$ret = $stmt_retrieve->fetch( PDO::FETCH_ASSOC );
$image_array = json_decode( $ret['url_array'] );
// ... et cetera ...
?>