добавить уникальный идентификатор для загрузки php mysql - PullRequest
1 голос
/ 21 октября 2011

Есть ли быстрый способ добавить уникальный идентификатор в загрузку php mysql? Я пролистал эти форумы, но надеялся, что есть гораздо более простой способ для достижения моей цели.

По сути, у меня есть загрузка, которая работает отлично - и я надеюсь добавить код продукта к каждому элементу, который будет сгенерирован с использованием автоматически увеличиваемого поля уникального идентификатора в mysql.

Пока у меня есть следующий php:

<?php include 'dbc.php'; page_protect();

if(!checkAdmin()) {header("Location: login.php");
exit();
}

$host  = $_SERVER['HTTP_HOST'];
$host_upper = strtoupper($host);
$login_path = @ereg_replace('admin','',dirname($_SERVER['PHP_SELF']));
$path   = rtrim($login_path, '/\\');

foreach($_GET as $key => $value) {
    $get[$key] = filter($value);
}

foreach($_POST as $key => $value) {
    $post[$key] = filter($value);
}   
?>

<?php 
if($_FILES['photo']) //check if we uploading a file
{
    $target = "images/furnishings/"; 
    $target = $target . basename( $_FILES['photo']['name']); 

    $title = mysql_real_escape_string($_POST['title']); 
    $desc = mysql_real_escape_string($_POST['desc']); 
    $price = mysql_real_escape_string($_POST['price']);  
    $pandp = mysql_real_escape_string($_POST['pandp']);  
    $pic = "images/furnishings/" .(mysql_real_escape_string($_FILES['photo']['name']));
    $productcode = "FUR000" .(mysql_real_escape_string($_POST['id']));
if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) 
{
    mysql_query("INSERT INTO `furnishings` (`title`, `desc`, `price`, `pandp`, `photo`,`productcode`) VALUES ('$title', '$desc', '$price', '$pandp', '$pic', '$productcode')") ;     

    echo "The product has been added to the furnishings category"; 
} 
else 
{ 
    echo "Please fill out the specifications and select the respective file to upload for the main image"; 

}
} 
?> 

И следующий HTML:

<form enctype="multipart/form-data" action="addfurn.php" method="POST">
  <table width="100%" border="2" cellpadding="5"class="myaccount">
   <tr>
       <td>Title: </td>
       <td><input type="text" name="title" /></td>
    </tr>
     <tr>
       <td>Description: </td>
       <td><input type="text" name = "desc" /></td>
     </tr>
          <tr>
       <td>Price: </td>
       <td><input type="text" name = "price" /></td>
     </tr>
        <tr>
       <td>P&amp;P: </td>
       <td><input type="text" name = "pandp" /></td>
     </tr>
     <tr>
       <td>Main Image: </td>
       <td><input type="file" name="photo" /></td>
     </tr>
     <tr>
       <td colspan="2"><input type="submit" class="CMSbutton" value="Add" /></td>
     </tr>
  </table>
</form>

Теперь, когда все работает - единственная "проблемная строка" в коде:

$productcode = "FUR000" .(mysql_real_escape_string($_POST['id']));

при условии, что, поскольку идентификатор еще не сгенерирован, он не может добавить его в запрос на вставку - поэтому таблица в mysql просто возвращает FUR000 за каждый добавленный новый элемент.

Есть ли способ изменить эту строку на автоинкремент в MySQL аналогично добавлению новых строк - или мне нужно включить уникальный код для каждого элемента в мою таблицу HTML?

Любая помощь высоко ценится!

Спасибо JD

Ответы [ 2 ]

1 голос
/ 21 октября 2011

вам нужно 2 запроса для этого.

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

однако я не вижу смысла в таком поле.Почему бы не создать его на лету?

0 голосов
/ 21 октября 2011

Вы хотите использовать uniqid, который генерирует уникальные идентификаторы.Я бы рекомендовал использовать его с большей энтропией, чтобы быть в безопасности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...