我有一个INSERT函数,它在“Image”表的“ImageFile”字段中插入图像文件名,由于自动编号,每行都有自己的ImageId。下面是一个例子:
ImageId ImageFile
23 orange.jpg
24 flowers.png
25 castle.png
26 orange.jpg
我想要做的是将ImageId插入另一个带有QuestionId和SessionId的表中,以便该表(Image_Question)可以使用ImageId将Image表与Image Question表链接。但是我如何对其进行编码以便在我在上表中插入图像细节时,它将检索它的ImageId并将其存储在Image_Question表中的ImageId中。示例如下:
ImageId SessionId QuestionId
23 AAA 1
24 AAA 2
25 AAA 3
26 AAA 4
我已经编写了SessionId和QuestionId的INSERT值,但只需要帮助检索和插入ImageId。以下是当前代码:
<?php
session_start();
//connect to db
$i = 0;
$insertimage = array();
for($i = 0; $i < $c; $i++ ){
$insertimage[] = "'". mysql_real_escape_string($_SESSION['id'] ) .
($_SESSION['initial_count'] > 1 ? $_SESSION['sessionCount'] : '') ."' ,'".
mysql_real_escape_string( $_POST['numQuestion'][$i] ) ."'";
}
$imagesql = "INSERT INTO Question (ImageId, SessionId, QuestionId)
VALUES (" . implode('), (', $insertimage) . ")";
echo($imagesql);
mysql_close();
?>
我有一个旧的PHP版本5.2.13因为这是大学服务器的版本所以我必须使用mysql()代码,即使我知道使用PDO或Mysqli更好。
答案 0 :(得分:0)
我认为你要找的是mysql_insert_id。它将返回最后一个插入行的id,因此您可以将其分配给变量并使用该varriable将id插入到具有下一个查询的另一个表中
答案 1 :(得分:0)
ImageId和SessionId之间没有逗号
$insertimage[] = "'". mysql_real_escape_string($_SESSION['id'] ) . "', '" .
($_SESSION['initial_count'] > 1 ? $_SESSION['sessionCount'] : '') ."' ,'".
mysql_real_escape_string( $_POST['numQuestion'][$i] ) ."'";
此外,如果Id是数字,请删除单引号(在这种情况下,您也不需要mysql_real_escape_string
,只需验证输入是is_numeric()
的数字而不是{{3}的浮点数}}):
$insertimage[] = mysql_real_escape_string($_SESSION['id'] ) . ", " .
($_SESSION['initial_count'] > 1 ? $_SESSION['sessionCount'] : '') ." ,".
mysql_real_escape_string( $_POST['numQuestion'][$i] );
答案 2 :(得分:-1)
试试这个:
$imagesql = "INSERT INTO Question
(ImageId, SessionId, QuestionId)
VALUES
((SELECT ImageId FROM image ORDER BY ImageId DESC LIMIT 1),
" . implode('), (', $insertimage) . ")";