PHP не будет вставлен в базу данных в PHPmyAdmin - PullRequest
0 голосов
/ 20 октября 2011

Так что я боролся с этим в течение нескольких дней, пытаясь выяснить, почему мои «продукты» не загружаются в phpMyAdmin после того, как пользователь отправляет форму - это приложение, которое позволяет участникам создавать свои собственные продукты ... & место, где я застрял, выглядит следующим образом: я вошел в систему, я нахожусь на странице «Список продуктов» от моего администратора пользователя. когда я ввожу информацию о продукте, нажмите кнопку, чтобы отправить его, он не будет публиковать продукт и связанные данные в phpmyadmin. и я пытаюсь переместить изображение, загруженное в папку, с помощью функции move_uploaded_file. Любая помощь будет принята с благодарностью. Весь код должен быть ниже (база данных подключена и все сеансы установлены правильно и т. Д.):

Форма из create_product.php (страница, на которой вошедший в систему пользователь перечисляет новый продукт:

if (isset($_POST['product_name'], $_POST['product_description'])) {
$product_name = $_POST['product_name'];
$product_description = $_POST['product_description'];

$errors = array();

if (empty($product_name) || empty($product_description)) {
    $errors[] = "All Fields are required";
} else {
    if (strlen($product_name) > 55 || strlen($product_description) > 255) {
        $errors[] = "One or more fields contains too many characters";
    } 

}

if (!empty($errors)) {
    foreach ($errors as $error) {
        echo $error, '<br/>';
        }
    } else {
        create_product($product_name, $product_description);

        header("location: product.php?product_id='.$product_id.'");
        exit();
    }
}

<form action="" method="post" enctype="multipart/form-data">
        <p>Product Name:<br/><input type="text" name="product_name" maxlength="55" /></p>
        <p>Describe this Product:<br/><textarea name="product_description" rows="6" cols="35" maxlength="255"></textarea></p>

        <p>Upload a product profile pic:<br/><input type="file" name="fileField" id="fileField" /></p>
        <p><input type="submit" value="Create"></p>
    </form>

Функция из моего файла product.functions.php (который включен в файл create_product.php):

function create_product($product_name, $product_description) {
$product_name = mysql_real_escape_string(htmlentities($product_name));
$product_description = mysql_real_escape_string(htmlentities($product_description));

mysql_query("INSERT INTO `products` VALUES ('','".$_SESSION['member_id']."', UNIX_TIMESTAMP(), '$product_name', '$product_description')");

$bmid = mysql_insert_id();
// place image in the folder
$newname = "$bmid.jpg";
move_uploaded_file($_FILES['fileField']['tmp_name'],'uploads/$newname');
}

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

Ответы [ 2 ]

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

проблема в вашем INSERT запросе, вы забыли поставить имена столбцов / s перед VALUES(), оно должно быть INSERT INTO table_name (columns_name) VALUES (values);

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

Есть несколько проблем с этим.Во-первых, это оператор вставки.Вам не нужно `, то есть специфично для MySQL и не требуется.Во-вторых, у вас есть нулевое значение для того, что может быть вашим полем ID.измените оператор вставки на (конечно же, с именами столбцов):

 INSERT INTO products (member,date_time,prod_name,prod_desc) VALUES ('".$_SESSION['member_id']."', UNIX_TIMESTAMP(), '$product_name', '$product_description')

Это приведет к тому, что ваш файл не будет загружен, а база данных не будет обновлена.Другая вещь, которую вы можете попробовать и может вызвать некоторые проблемы, это удалить переменные php из строки и объединить их вместе.Переменная newname должна быть записана как.

$location = "uploads/" . $bmid . ".jpg";
move_uploaded_file($_FILES['fileField']['tmp_name'],$location);

Если это не сработает, вам потребуется вывести SQL и любую ошибку, с которой он сталкивается.

...