Я новичок в утверждениях, поэтому, пожалуйста, приходите ко мне медленно. Я проверил вопросы, заданные другими, но не нашел решения, чтобы решить мою проблему.
Я пытаюсь создать страницу пользователя с готовыми заявлениями, чтобы они могли добавлять товары в свои магазины.
Я хотел бы получить store_id из магазинов и вставить в продукты в форме вставки продукта.
Я пробовал несколько методов, но они не работали.
Вот мои попытки:
Подключение
$mysqli = new mysqli(host, dbase, username, password);
Первый метод подготовить операторы: Я пробовал этот метод также без bind_result.
if ($stmt = $mysqli->prepare("INSERT INTO products (user_id, cat_id, store_id, item_name, item_code, item_description, item_qtty, item_price, item_seo_url, item_image, item_date) SELECT store_id FROM stores WHERE user_id = ?")) {
$stmt->bind_param("i", $user_id);
$user_id = filterString($_SESSION['id']);
$stmt->execute();
$stmt->bind_result($store_id);
if($stmt->fetch()){
echo " Records created successfully. Redirect to landing page";
header("location: index.php");
exit();
} else{
echo "Something went wrong. Please try again later.";
}
}
$stmt->close();
Второй метод sql подготовить операторы: Я тоже пробовал это, но не сработало:
$sql = "INSERT INTO products (user_id, cat_id, store_id, item_name, item_code, item_description, item_qtty, item_price, item_seo_url, item_image, item_date) SELECT ?, store_id FROM stores WHERE user_id = ?";
if($stmt = $mysqli->prepare($sql)){
$stmt->bind_param("iiisiisiisss", $user_id, $cat_id, $store_id, $item_name, $item_code, $item_description, $item_qtty, $item_price, $item_seo_url, $item_image, $item_date);
$user_id = $_SESSION['id'];
$cat_id = $cat_id;
$store_id = $store_id;
$item_name = $item_name;
$item_code = $item_code;
$item_description = $item_description;
$item_qtty = $item_qtty;
$item_price = $item_price;
$store_seo_url = seo_url($item_name);
$item_image = $vtyol;
$item_date = $date;
if($stmt->execute()){
echo " Records created successfully. Redirect to landing page";
header("location: index.php");
exit();
} else{
echo "Something went wrong. Please try again later.";
}
}
$stmt->close();
Не было возможности получить store_id из магазинов, я отображаю идентификатор магазина на странице, чтобы увидеть, получу ли я его, он пустой.
как я могу заставить это работать?
Нужно ли объявлять все значения в bind_param в первом методе? (Я пытался и не работал).
если да, то как добавить пункт $stmt->bind_param("i", $user_id);
.
Я действительно не знаю, что еще попробовать, нужен твой совет и помощь.
Gtg в больницу сейчас вернусь через 1 час, ответит на ваши вопросы и ответы.
Спасибо всем
Последний пример, который я попробовал с кодом от @Michael Eugene Yuen, постоянно повторял, что что-то пошло не так, потому что я не могу получить $ store_id из таблицы store.
Мои коды были длинными, поэтому я сократил их и попытался получить тот же результат.
Последний пример не нарушен:
$sql = "INSERT INTO products (
user_id, store_id, name, salary
)
SELECT ?, ?, ?, ?,
`store_id` FROM stores WHERE user_id = ?";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("iisii", $user_id, $store_id, $name, $salary, $user_id);
$user_id = $user_id;
$store_id = $store_id;
$name = $name;
$salary = $salary;
if($stmt->execute()){
header("location: index.php");
exit();
} else{
echo "Something went wrong. Please try again later.";
}
$stmt->close();
Блок данных базы данных для обеих таблиц:
CREATE TABLE IF NOT EXISTS `products` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` varchar(100) NOT NULL,
`store_id` varchar(100) NOT NULL,
`name` varchar(255) NOT NULL,
`salary` int(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `stores` (
`store_id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` varchar(100) NOT NULL,
`name` varchar(255) NOT NULL,
`salary` int(10) NOT NULL,
PRIMARY KEY (`store_id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
INSERT INTO `stores` (`store_id`, `user_id`, `name`, `salary`) VALUES
(1, '12', 'aaaaaaaaaaad', 12),
(2, '12', 'sada', 1234656);