xmlファイルをMySQLでテーブルの列にロードしたいとします。 UPDATEステートメントの代わりにINSERTステートメントでこれを行うにはどうすればよいですか?MySQL LOAD_FILE()で列にXMLを追加する
このコードは、新しい行を作成するためにINSERTを実行し、最後に挿入された行のIDを取得してから、XMLファイルをロードするための更新を試みます。しかし、xml情報で行を更新することはありません。
xmlをデータベースの列に入れるために修正する必要があることを知りたいと思います。私はまた、コードを合理化し、1つのINSERTステートメントでLOAD_FILEを実行する必要があります。 xmlファイルを追加する
のMySQLデータベースのテーブル構造
Field Datatype Attributes Extra
userid INT(6) unsigned auto_increment
user_events LONGTEXT
PHPコード
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
$con = mysql_connect("hostname","adminuser","adminpassword");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("test_db", $con);
$qinsert = "INSERT INTO load_xml (`user_events`) VALUES ('user events')";
$result_insert = mysql_query($qinsert);
$qtext = "SELECT * FROM load_xml";
$result = mysql_query($qtext);
$numrows = mysql_num_rows ($result);
while ($row = mysql_fetch_row($result)) {
echo 'user id '.$row[0].' user_events '.$row[1].'<br/>';
}
$insert_id = "SELECT LAST_INSERT_ID()";
$rin_id = mysql_query($insert_id);
$row = mysql_fetch_row($rin_id);
$userid = $row[0];
echo 'last added id '.$userid.'<br/>';
$update_xml = "UPDATE load_xml SET user_events=LOAD_FILE('my_events.xml') WHERE userid='$userid'";
$result_update = mysql_query($update_xml);
$qtext = "SELECT * FROM load_xml";
$result = mysql_query($qtext);
$numrows = mysql_num_rows ($result);
echo $numrows.'<br/>';
while ($row = mysql_fetch_row($result)) {
echo 'user_id '.$row[0].' user_events '.$row[1].'<br/>';
}
mysql_close($con);
?>
は、だから私は現在になりますそのするmysql_queryを仮定するべきではありません - ここPDO prepared statementとfile_get_contents()を使用して別のバージョンでありますディレクトリ。現在のディレクトリを決定し、それを使ってパスを構築する方法はありますか? – user823527
LOAD_FILEはサーバサイド(mysqlサーバ)アクションであり、ファイルにアクセスできる必要があります。 '$ path = dirname(__ FILE __);'を使うと、現在のファイルへのパスを得ることができます。 'file_get_contents()'を使って文字列にデータをロードし、それをクエリに渡すほうが良いでしょう。私は私の答えに別の例を加えました。 – nnichols
PDOの準備されたステートメントのアプローチは非常にうまく機能しました!ありがとう。 – user823527