此代码有效,并将所有正确的信息输入数据库,但错误检查返回错误。我可以删除错误检查,但我担心会造成一些噩梦,稍后会再次困扰我,或者我错过了一个根本问题:
$sql5a = mysql_query("SELECT id FROM categories WHERE category='$category'");
$categoryresult = mysql_fetch_array($sql5a);
$oldcategoryid = $categoryresult['id'];
$sql6a = "INSERT INTO lookupcategory SET
fbid='$fbid2',
categoryid='$oldcategoryid'";
if ( @mysql_query($sql5b) ) {
echo('sql5b updated successfully<br>');
} else {
echo('Error: sql5b not updated<br>'.mysql_error() );
}
if ( @mysql_query($sql6b) ) {
echo('sql6b updated successfully<br>');
} else {
echo('Error: sql6b not updated<br>'.mysql_error() );
}
输出为:"错误:sql5b未更新您的SQL语法有错误;在第1行的"Resource id#7"附近查看与MySQL服务器版本对应的手册,以获得正确的语法。"sql6b更新成功"
当我检查数据库时,所有条目都是正确的。如果sql5a不工作,sql6b就不能工作,因此我对这个错误感到困惑。
示例类别为:旅行/休闲类别最初是根据表单响应创建的:$category=htmlentities($fbdetail["类别"],ENT_QUOTES);并成功进入数据库。使用AUTO_INCREMENT分配了一个id号。
将查询分配给变量$sql5a
,但调用@mysql_query($sql5b)
。$sql5b
不存在(至少在这个样本中)。与$sql6a
相同。。。
您可以在不使用VALUES
的情况下使用INSERT
语法,但需要提交INTO
关键字。
$sql5a = mysql_query("SELECT id FROM categories WHERE category='$category'");
if ( $res5a = @mysql_query($sql5a) ) { // first execute query and store resource in variable
echo('sql5a selected successfully<br>');
} else {
echo('Error: sql5a failed<br>'.mysql_error() );
}
$categoryresult = mysql_fetch_array($res5a); // fetch array passing the RESOURCE var, NOT query string
$oldcategoryid = $categoryresult['id'];
$sql6a = "INSERT lookupcategory SET
fbid='$fbid2',
categoryid='$oldcategoryid'";
if ( @mysql_query($sql6a) ) {
echo('sql6a inserted successfully<br>');
} else {
echo('Error: sql6a failed<br>'.mysql_error() );
}
我不知道从哪里得到$fbid2
或$category
,因为它不在这段代码中。
插入的语法为:
INSERT INTO table(col1, col2 ...) VALUES(val1, val2 ...)
在您的具体情况下:
$sql6a = "INSERT INTO table(fbid, categoryid) VALUES('{$fbid2}','{$oldcategoryid}')"