多个mysql语句未通过php执行(语句通过phpmyadmin工作)
在创建一个统计程序的同时,我一直在跟踪每小时有多少飞机访问一个机场 我的脚本计算过去一小时的航班数,并将其保存到数据库中。如果我在phpmyadmin中复制语句,我会不断得到mysql语法错误,它会正常工作多个mysql语句未通过php执行(语句通过phpmyadmin工作),php,mysql,sql,phpmyadmin,Php,Mysql,Sql,Phpmyadmin,在创建一个统计程序的同时,我一直在跟踪每小时有多少飞机访问一个机场 我的脚本计算过去一小时的航班数,并将其保存到数据库中。如果我在phpmyadmin中复制语句,我会不断得到mysql语法错误,它会正常工作 $date = 2013091713; //$date = date('YmdH', mktime(date('H'))); $sql = ''; foreach ($aerodrome as $icao => $value) { $sql .= "INSERT INTO f
$date = 2013091713;
//$date = date('YmdH', mktime(date('H')));
$sql = '';
foreach ($aerodrome as $icao => $value) {
$sql .= "INSERT INTO flightsperhour(date, aerodrome, inbound, outbound)
VALUES('". $date ."', '" . $icao . "' , " . (isset($value['inboud']) ? $value['inboud'] : 0) . ", " . (isset($value['outbound']) ? $value['outbound'] : 0) . ");";
}
//INSERT INTO flightsperhour(date, aerodrome, inbound,outbound) VALUES('2013091713', 'EBBR' , 0, 1);
//INSERT INTO flightsperhour(date, aerodrome, inbound,outbound) VALUES('2013091713', 'ELLX' , 0, 1);
if(mysql_query($sql))
{
} else{
die(mysql_error());
}
编辑:Mysql错误:您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解使用near“INSERT INTO flightsperhour(日期、机场、入站、出站)值('2013'第2行)的正确语法
EDIT2:修复了单个缺失的“
编辑3:应编程学生的要求,打印其解决方案
INSERT INTO flightsperhour(date, aerodrome, inbound, outbound)
VALUES('2013091713', 'EBBR' , '', '1'),
VALUES('2013091713', 'ELLX' , '', '1')
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 'VALUES('2013091713', 'ELLX' , '', '1')' at line 3
您在
$date
和$icao
之间缺少冒号'
更正代码:
$date = 2013091713;
//$date = date('YmdH', mktime(date('H')));
$sql = '';
$sql .= "INSERT INTO flightsperhour(date, aerodrome, inbound, outbound) ";
foreach ($aerodrome as $icao => $value) {
$inbound = isset($value['inboud']) ? $value['inboud'] : 0;
$outbound = isset($value['outbound']) ? $value['outbound'] : 0;
$sql .= "
VALUES('". $date ."', '" . $icao . "' , '" . $inboud . "', '" . $outbound . "'),";
}
$sql = substr($sql, 0, strlen($sql)-1);
//INSERT INTO flightsperhour(date, aerodrome, inbound,outbound) VALUES('2013091713', 'EBBR' , 0, 1);
//INSERT INTO flightsperhour(date, aerodrome, inbound,outbound) VALUES('2013091713', 'ELLX' , 0, 1);
if(mysql_query($sql))
{
} else{
die(mysql_error());
}
您尚未关闭
$date
的单引号,请将此'“$date.”
更改为'“$date.”
建议您使用PDO或MySQLi扩展,因为PHP5.5将不再支持MySQL扩展
$date = 2013091713;
//$date = date('YmdH', mktime(date('H')));
$db_conn = new PDO('mysql:host=<host>;dbname=<database name>', '<username>', '<password>');
try{
$sql = $db_conn->prepare("INSERT INTO flightsperhour(date, aerodrome, inbound, outbound) VALUES (:date,:aerodrome,:inbound,:outbound)");
foreach ($aerodrome as $icao => $value) {
$inbound = isset($value['inboud']) ? $value['inboud'] : 0;
$outbound = isset($value['outbound']) ? $value['outbound'] : 0;
$sql->execute(
array(
":date" => $date,
":aerodrome" => $aerodrome,
":inbound" => $inbound,
":outbound" => $outbound
)
);
}
}
catch (PDOException $pe){
print $pe->getMessage();
}
$date=2013091713;
//$date=date('YmdH',mktime(date('H'));
$db_conn=new PDO('mysql:host=;dbname=','');
试一试{
$sql=$db_conn->prepare(“插入flightsperhour(日期、机场、入站、出站)值(:日期、机场、入站、出站)”);
foreach(机场为$icao=>$value){
$inboud=isset($value['inboud'])?$value['inboud']:0;
$outbound=isset($value['outbound'])?$value['outbound']:0;
$sql->execute(
排列(
“:date”=>$date,
“:机场”=>$机场,
“:inbound”=>inbound美元,
“:outbound”=>$outbound
)
);
}
}
捕获(PDO异常$pe){
打印$pe->getMessage();
}
使用您的代码和我得到的回音语句的固定列仍然相同插入flightsperhour(日期、机场、入站、出站)值('2013091713','EBBR','1');插入flightsperhour(日期、机场、入站、出站)值('2013091713','ELLX','1'));
这给出了完全相同的mysql错误您的答案结合Wrikken注释修复了问题注:您的代码是开放的。如果可能,使用PHP的新mysqli库而不是旧的mysql扩展并利用。只使用值
一次,(因此值(…第一行…)(…第二行…)(…第三行…)
,而不是值(…第1行…),值(…第2行…),值(…第3行…)
,记住,在一个mysql\u query()中只能得到一条语句。最后一条语句修复了它:-)感谢Wrikken不知道mysql查询函数只使用了一条语句
$date = 2013091713;
//$date = date('YmdH', mktime(date('H')));
$db_conn = new PDO('mysql:host=<host>;dbname=<database name>', '<username>', '<password>');
try{
$sql = $db_conn->prepare("INSERT INTO flightsperhour(date, aerodrome, inbound, outbound) VALUES (:date,:aerodrome,:inbound,:outbound)");
foreach ($aerodrome as $icao => $value) {
$inbound = isset($value['inboud']) ? $value['inboud'] : 0;
$outbound = isset($value['outbound']) ? $value['outbound'] : 0;
$sql->execute(
array(
":date" => $date,
":aerodrome" => $aerodrome,
":inbound" => $inbound,
":outbound" => $outbound
)
);
}
}
catch (PDOException $pe){
print $pe->getMessage();
}