我有一个问题(显然),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查询中。
答案 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);
}