将文本值从下拉列表传输到相应的数据库ID中-sql插入和php
我无法将下拉列表值:Artist,text转换为其各自的ID Artist_ID,num并将其插入事件表。场地ID也有同样的问题将文本值从下拉列表传输到相应的数据库ID中-sql插入和php,php,html,mysql,sql,Php,Html,Mysql,Sql,我无法将下拉列表值:Artist,text转换为其各自的ID Artist_ID,num并将其插入事件表。场地ID也有同样的问题 <?php $artist = 'SELECT Artist_ID FROM artist WHERE :Artist = Artist_Name '; $venue =
<?php
$artist =
'SELECT Artist_ID
FROM artist
WHERE :Artist = Artist_Name
';
$venue =
'SELECT Venue_ID
FROM venue
WHERE :Venue = Venue_Name
';
$stmt = $pdo->prepare(
'INSERT INTO event(Event_Date, Artist_ID, Venue_ID, Price)
VALUES (:Event_Date, $artist, $venue, :Price)');
$stmt->bindparam('Artist_ID', $_POST[$artist], PDO::PARAM_STR);
$stmt->bindparam('Venue_ID', $_POST[$venue], PDO::PARAM_STR);
$stmt->bindparam('Date', $_POST[':Date'], PDO::PARAM_STR);
$stmt->bindparam('Price', $_POST[':Price'], PDO::PARAM_STR);
$stmt->execute();
$newId = $pdo->lastInsertId();
exit;
?>
这是下拉列表的代码:
<select name='Artist' id=':Artist'>
<?php
$stmt = $mysqli->prepare(
'SELECT Artist_Name
FROM artist
ORDER BY Artist_Name');
$stmt->execute();
$stmt->bind_result($Artist);
$stmt->store_result();
while($stmt->fetch())
echo("<option> {$Artist} </option>");
?>
</select>
艺术家表和场馆表具有文本值,这些文本值分配有主键ID,主键ID存储在带有艺术家日期和价格的活动表中
任何帮助都将不胜感激,谢谢。尝试此操作,同时选择艺术家id,并将其作为如下值在下拉列表中传递:
<select name='Artist' id=':Artist'>
<?php
$stmt = $mysqli->prepare(
'SELECT Artist_Name, Artist_ID
FROM artist
ORDER BY Artist_Name');
$stmt->execute();
$stmt->bind_result($Artist, $ID);
$stmt->store_result();
while($stmt->fetch())
echo("<option value=\"$ID\"> {$Artist} </option>");
?>
</select>
我认为您还需要更新代码中的POST元素,但我不确定您在第一部分中使用的:Artist类型变量是什么。如果您像我在这里做的那样使用id作为值,那么发布的值将是他们选择的名称的id,您不需要查询它
<?php
$artist = $_POST['Artist'];
$venue = $_POST['venue'];
$stmt = $pdo->prepare(
'INSERT INTO event(Event_Date, Artist_ID, Venue_ID, Price)
VALUES (:Event_Date, :Artist, :Venue, :Price)');
$stmt->bindparam(':Artist', $artist, PDO::PARAM_STR);
$stmt->bindparam(':Venue', $venue, PDO::PARAM_STR);
$stmt->bindparam(':Event_Date', $_POST['Date'], PDO::PARAM_STR);
$stmt->bindparam(':Price', $_POST['Price'], PDO::PARAM_STR);
$stmt->execute();
$newId = $pdo->lastInsertId();
exit;
?>你能澄清哪里出了问题吗?您遇到了什么问题?使用选项标记的值属性:foobar。这似乎可行,谢谢,但现在将空数据发布到表中:/n有什么想法吗?您好,我刚刚更新了我的答案,以包括插入代码的更正-如果您的表单发布了“地点”、“日期”,根据显示的代码,除了“艺术家”之外,还有“价格”,这应该有效。当前的表单ID为:艺术家或:场地等,然后在添加代码后,我得到一个无效参数编号的异常。在添加了修改后的代码后,它还声明了艺术家和场地的一个未知索引。您是否尝试从您的post vars中去掉冒号?你有两个选择:1至少试着了解发生了什么事情,自己取得一些进展。或者,如果你希望其他人帮你写,那么就把你所有的代码都写出来如果我把冒号拿出来,它会写空数据,设法让它工作张贴id只需要让用户选择文本,例如Lady Gaga而不是艺术家id,例如3,并且仍然只张贴艺术家id我正在尝试理解它,它只是向我扔新的问题,我没有经验与php,所以不知道如何解决