sql >> Databáze >  >> RDS >> Mysql

Jak nahrát obrázek PHP a vložit cestu do MySQL?

Ve svém komentáři se ptáte, jak nahrát a uložit data do mysql. Takže tady to je:

Chcete-li získat soubor, měli byste mít ve svém html skript, jako je tento:

<html>
<body>

     <form action="upload_file.php" method="post" enctype="multipart/form-data">
        <label for="file">Filename:</label>
        <input type="file" name="file" id="file"><br>
        <input type="submit" name="submit" value="Submit">
     </form>

</body>
</html>

Nyní, v POST, by váš soubor PHP měl vypadat takto, ale vezměte prosím na vědomí, že musíte zkontrolovat, zda soubor v POST existuje:

if ($_FILES["file"]["error"] > 0)
  {
  echo "Error: " . $_FILES["file"]["error"] . "<br>";
  }
else
  {
  echo "Upload: " . $_FILES["file"]["name"] . "<br>";
  echo "Type: " . $_FILES["file"]["type"] . "<br>";
  echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
  echo "Stored in: " . $_FILES["file"]["tmp_name"];

  }

Vzhledem k tomu, že část „Uloženo v:“ je pouze dočasnou cestou, měli byste přejít ke své „skutečné“ cestě k obrázku pomocí move_uploaded_file() .Řekněme, že skutečná/výchozí cesta pro vaše obrázky je v:

$image_dir= '/images/';

Stačí přesunout soubor pomocí tohoto:

move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $image_dir. $_FILES['uploaded_file']['name']);

A vaše úplná cesta k obrázku by byla

$image = $final_save_dir . $_FILES['uploaded_file']['name'];

Existuje několik způsobů, jak uložit cestu k databázi:

1.:Je uložit pouze název souboru a zřetězit cestu k obrázku v PHP pomocí $_SERVER['DOCUMENT_ROOT'] a vaše výchozí cesta k obrázku jako:

$sql="insert into employee_detail( emp_image, employee_name, employee_address,
    employee_contact, employee_designation, employee_salary) 
values( '$image', '$_POST[employee_name]', '$_POST[employee_address]', '$_POST[employee_contact]',
    '$_POST[employee_designation]','$_POST[employee_salary]')";

2.:Je uložit úplnou cestu jako:

$sql="insert into employee_detail( emp_image, employee_name, employee_address,
    employee_contact, employee_designation, employee_salary) 
values( '".$_SERVER['DOCUMENT_ROOT']."\\images\\".$image."', '$_POST[employee_name]', '$_POST[employee_address]', '$_POST[employee_contact]',
    '$_POST[employee_designation]','$_POST[employee_salary]')";

Doporučuji tento přístup, kdy zadáte částečnou cestu (bez kořenového adresáře), abyste později neměli problém s jeho nasazením:

$sql="insert into employee_detail( emp_image, employee_name, employee_address,
    employee_contact, employee_designation, employee_salary) 
values( 'images\\".$image."', '$_POST[employee_name]', '$_POST[employee_address]', '$_POST[employee_contact]',
    '$_POST[employee_designation]','$_POST[employee_salary]')";

A ujistěte se, že obrázky byly úspěšně nahrány do tohoto výchozího adresáře/cesty obrázku .

AKTUALIZACE

Doporučuji také použít mysqli_* nebo PDO a použijte prepare() metoda /funkce k zabránění vkládání SQL.



  1. Jak seřadit výsledek z string_agg()

  2. Jak mohu vymazat mezipaměť dotazů SQL Server?

  3. Jak změnit hodnotu automatického přírůstku databáze MySQL / MariaDB

  4. Jak používat příkaz Alter Table v SQL?