我正在使用QueryPath解析网站的表,并尝试将我的结果放入MySQL数据库。 该表如下所示:
mysql_query("CREATE TABLE Airplanes (
flightID VARCHAR( 50 ) PRIMARY KEY NOT NULL,
flightLink TEXT( 20000 ) NOT NULL,
orig TEXT( 20 ) NOT NULL,
dest VARCHAR( 20 ) NOT NULL ,
time VARCHAR( 5 ) NOT NULL
);
");
我试图使用他们的航班号作为ID来保存飞机。
这是我提取表格和回声来推送变量内容的方法。
$flightData = $row->find('td');
// $flightID = str_replace(" ", "", $flightData->eq(1)->text());
$flightID = mysql_real_escape_string( trim( $flightData->eq(1)->text() ) );
$flightLink = mysql_real_escape_string( $flightData->eq(1)->html() );
$orig = mysql_real_escape_string( "ROME (FCO)" );
$dest = mysql_real_escape_string( trim( $flightData->eq(2)->text() ) );
$time = mysql_real_escape_string( trim( $flightData->eq(4)->text() ) );
echo '$flightID: ';
echo var_dump($flightID)."<br>";
echo '$orig: ';
echo var_dump($orig)."<br>";
echo '$dest: ';
echo var_dump($dest)."<br>";
echo '$time: ';
echo var_dump($time)."<br>";
没有要求回复$ flightLink,那可能会很长。 这是变量的输出:
$flightID: string(7) "JN 5215"
$orig: string(10) "ROME (FCO)"
$dest: string(14) "TEL AVIV (TLV)"
$time: string(5) "23:45"
这是我的SQL查询:
$insertQuery = mysql_query("INSERT INTO Airplanes (flightID, flightLink, orig, dest, time) VALUES( '$flightID', '$flightLink', '$orig', '$dest', '$time' ) ON DUPLICATE KEY UPDATE;");
if($insertQuery == false) die("Problem inserting flight data into table. ".mysql_error($connection));
这是我在输入查询中得到的错误消息:
Problem inserting flight data into table. You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
我已经看到很多其他人在使用字符串输入MySQL时遇到了麻烦,几乎所有人都没有使用引号,所以我敢打赌它会有所改变。但仍然无法找到它。 同样感谢有关改进MySQL表的反馈,只是进入这个并且不太确定数据类型。
答案 0 :(得分:2)
您的INSERT ... ON DUPLICATE KEY UPDATE
语法无效,因为您必须告知遇到重复时要更新的列
INSERT INTO Airplanes (flightID, flightLink, orig, dest, time)
VALUES( '$flightID', '$flightLink', '$orig', '$dest', '$time' )
ON DUPLICATE KEY UPDATE
^^^^ missing part of ON DUPLICATE clause
应该是
INSERT INTO Airplanes (flightID, flightLink, orig, dest, time)
VALUES( '$flightID', '$flightLink', '$orig', '$dest', '$time' )
ON DUPLICATE KEY UPDATE flightLink = VALUES(flightLink),
orig = VALUES(orig),
dest = VALUES(dest),
time = VALUES(time)