【问题标题】:How to retrive imageid and insert it into another table如何检索图像 id 并将其插入到另一个表中
【发布时间】:2012-06-10 12:23:40
【问题描述】:

我有一个 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 更好。

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    试试这个:

    $imagesql = "INSERT INTO Question 
                 (ImageId, SessionId, QuestionId) 
                 VALUES 
                 ((SELECT ImageId FROM image ORDER BY ImageId DESC LIMIT 1),
                  " . implode('), (', $insertimage) . ")";
    

    【讨论】:

      【解决方案2】:

      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() 验证输入是数字,而不是 is_float() 的浮点数):

      $insertimage[] = mysql_real_escape_string($_SESSION['id'] ) . ", " .
                      ($_SESSION['initial_count'] > 1 ? $_SESSION['sessionCount'] : '') ." ,". 
                      mysql_real_escape_string( $_POST['numQuestion'][$i] );
      

      【讨论】:

        【解决方案3】:

        我认为您正在寻找的是 mysql_insert_id 。它将返回最后插入行的 id,因此您可以将其分配给变量并使用该变量将 id 插入到下一个查询的另一个表中

        【讨论】:

        • 我会试一试并回复你
        猜你喜欢
        • 2020-08-19
        • 2017-08-02
        • 2012-07-18
        • 1970-01-01
        • 1970-01-01
        • 2021-08-25
        • 2019-01-26
        • 1970-01-01
        • 2015-05-30
        相关资源
        最近更新 更多