mySQL查询 - 不插入

时间:2014-07-24 07:10:18

标签: php mysql sql

我有一个问题(显然),sql查询未成功插入表中;

这是我的代码:

if (isset($_POST["newpost"])) {                                                 
    $sqlSTR = "SELECT idPhoto FROM tblhomepagephotos order by idPhoto desc LIMIT 1 INTO @myID; 
        INSERT INTO tblhomepagetext(idText, hpText) 
        VALUES (@myID, '" . $_POST["newpost"] . "')";                                            
    echo $sqlSTR;
    $result= mysql_query($sqlSTR);                                                                                  
} 

sqlSTR的回显是:

SELECT idPhoto FROM tblhomepagephotos order by idPhoto desc LIMIT 1 INTO @myID; 
INSERT INTO tblhomepagetext(idText, hpText) VALUES (@myID, 'Text here')

现在问题是它完美地工作并且从mySQL Workbench执行时完全插入到tblhomepagetext中,但是从网站执行时不起作用。

为什么有任何想法?

我认为这可能是由于某些PHP冲突导致';'在sql查询中。

1 个答案:

答案 0 :(得分:2)

您错误地使用INSERT INTO SELECT语法,您可以更换订单。它应该更像是:

INSERT INTO Customers (CustomerName, Country)
SELECT SupplierName, Country FROM Suppliers
WHERE Country='Germany'; 

http://www.w3schools.com/sql/sql_insert_into_select.asp

但是,我怀疑你根本不需要INSERT INTO SELECT。如果你只需要INSERT进入表格,那么语法更像是这样:

INSERT INTO Customers (CustomerName, City, Country)
VALUES ('Cardinal', 'Stavanger', 'Norway'); 

http://www.w3schools.com/sql/sql_insert.asp

我建议您在继续之前阅读这些链接

编辑:您的示例中的半冒号也不应该存在,即将命令分成两部分。这就是mySQL工作台可以执行查询的原因。它按字面顺序执行两个查询。首先,它从你的tblhomepagephotos表中选择一些值,然后插入到tblhomepagephotos中。如上所示,您需要组合查询。然后,PHP将能够执行单个查询。

EDIT2: 您的代码存在许多问题,很难判断您是否需要INSERT INTO SELECT,因为我无法弄清楚您的逻辑。 我建议你做的是阅读更多关于如何与数据库进行基本CRUD交互的例子(http://en.wikipedia.org/wiki/Create,_read,_update_and_delete)。我建议你可能需要先SELECT你的照片详细信息,然后插入到tblhomepagetext表中。但首先看看下面的代码是否有效。顺便说一句,在使用mysql_real_escape_string()通过post将值插入数据库时​​,至少应使用mysqli,如下所示。更好的是使用PDO之类的东西,或者学习整个PHP框架,例如Cake, Codeigniter or Zend Framework。这些都是帮助我们了解SQL Injection

的解决方案

根据您的最新评论,以下是我认为您的解决方案:

// PERFORM Base64 PHOTO INSERT QUERY HERE 
// (I assume your already doing this as you mention from your Base64 comment.)

// Directly following the insert image query, you need to use the magical command of `mysqli_insert_id()`. 
// This will grab the latest inserted Database ID from the previous INSERT command. 
$latest_photo_id = mysqli_insert_id();

// now that we have the latest photo ID we can insert into our homepage table
if (isset($_POST["newpost"])) {
    $your_id = 1; // put a ID from your photo table here.                                      
    $sqlSTR = "INSERT INTO tblhomepagetext(idText, hpText) 
                VALUES (".$latest_photo_id.", '" . mysql_real_escape_string($_POST["newpost"]) . "')";
    echo $sqlSTR;
    $result= mysqli_query($sqlSTR);
}