Windows10上でApacheサーバーとMySQLを使ってプログラムを作っています。
HTML文書からPHPスクリプトを読んでいるのですが以下のメッセージが出てきます。
Parse error: syntax error, unexpected $end in C:\xampp\htdocs\karaoke_project\karaoke_data_conversion.php on line 96
この96行目というのは実は何もなくて、サクラエディターを使っているので黒抜きの[EOF] というのが出ているだけです。文書の最後にいつも出ているやつです。
他の簡単なHTMLからPHPの呼び出しができることは確認済みです。
スクリプトを何度も読み返してみましたが、何が悪いのか全く見当がつきません。
詳しい方がいらっしゃいましたら、ぜひ教えてください。
お願いいたします。
下に、HTML文書とPHPスクリプトをコピーしてあります。
HTML:
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title> form sample</title>
</head>
<body>
sample for to connect to MySQL</br>
Input the song number.</br>
<form method="post" action="karaoke_data_conversion.php">
<input type="text" name="tx"></br></br>
<input type="submit" name="sb" value="press to start MySQL">
</form>
</body>
</html>
PHP:
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title> karaoke_data_conversion.php</title>
</head>
<body>
<h1> start PHP program using MySQL</h1></br>
<?php
$TX=htmlspecialchars($_POST['tx']);
echo "sent data is :"."\"".$TX."\"";
//========================================
// path and name: C:\xampp\htdocs\karaoke_project\karaoke_data_conversion.php
// php script to convert original song path data into song number and songfullpath
//=========================================
$cxn=mysqli_connect("localhost","root","phpscript1682")
or exit("failed to connect to MySQL");
echo "connected to MySQL </br>";
mysqli_select_db(karaoke)
or die("failed to open karaoke database");
echo "opened database karaoke</br>";
$source_table="originalpath"; // original database table
$destnation_table="num2song"; // new table with song number and song path separated
$number="";// extracted song number
$path=""; // extracted song path
$bango=array("","","","","","","","");
$moji="";
$start=0;
$idnum=1;
while ($idnum<10){
// get the original path data from database table
$jobrequest="select songpath from "."\"".$source_table."\""." where id=$idnum";
// integer variable does not need "" to enclose
$result=mysqli_query($cxn, $jobrequest)
or die("fail to get job done");
// extract song number and song path here
// and assign them to $number and $path
$length=mb_strlen($result,'UTF-8'); // get the length of the original path
echo "length of the path is ".$length;
for ($i=$length-5; $i>0; $i--) {// ignore ".avi" part
$moji=mb_substr($result,$i,1,'UTF-8');
if ($moji="\\"){
$start=$i+1;
break;
}
for ($i=$start;$i<$length-5; $i++){
$moji=mb_substr($result,$i,1,"UTF-8");
if ($moji==" " || $moji==" "){
break;
}
if (($moji >="0" && $moji <="9") || $moji=="\\"){
$bango[$i-$start]=$moji;
}
}
$number="";
$i=0;
while( $bango[$i]!=""){
$number .= $bango[$i];
$i++;
}
$number .="\0";
// write the separated data into destination_table
$jobrequest="insert into "."\"".$destination_table."\""." (songnum, songfullpath)";
$jobrequest .=" values ("."\"".$number."\"".","."\"". $path."\"".")";
// variable values must be enclosed by ""
// $jobrequest itslf must be enclosed by "" as well
mysqli_query($jobrequest)
or die("cannot add data to the table");
echo "new data added";
$idnum++; // next data
// reset bango array (8 elements) to null
for($i=0; $i<8; $i++){
$bango[$i]="";
}
} // end while
echo "data conversion is complete</br>";
mysqli_close($cxn);
?>
</body>
</html>
ちなみに、この</html> が95行目で、この下に[EOF] と出ています。
補足
早速にご回答いただき、有難うございます。 もう一度見てみましたが、かっこの閉じ忘れといったものはありませんでした。 IDEとして以前Eclipsを使ったことがありましたが、なかなか複雑で慣れなくて、エディターを使ってコーディングするのが手軽な気がしています。 色々とスクリプトを変えながらバグを探していますが、質問したのとは違うエラーメッセージが出てきます。 おそらくMySQL関数の使い方に間違いがあるのだと思います。 この質問はいったん閉めさせてもらって、別の形の質問をしたいと思います。 お礼コメントの欄に文章を入れて出そうとしたら、なぜかおかしな具合になってできませんでしたので、補足コメントに入れさせてもらいます。