3

MYSQL でデータ型 POINT を使用するのは初めてなので、PHP でテーブルへの出力をテストしたかったのですが、「未定義のインデックス」というエラーが表示されます。このエラーを修正してテーブルにポイントを表示するにはどうすればよいですか?

エラー メッセージ Notice: Undefined index: my_point in C:\xampp\htdocs\view.php on line 23

(ポイントが表に表示されません。どうすれば修正できますか?)

MYSQL テーブル

/*テーブルのテーブル構造highcharts_php*/

            CREATE TABLE `highcharts_php` (
              `id` int(11) NOT NULL AUTO_INCREMENT,
              `run_name` varchar(150) DEFAULT NULL,
              `my_point` POINT DEFAULT NULL,
              `cur_timestamp`  TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
               PRIMARY KEY (`id`)

            ) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=latin1;
              SET time_zone='+00:00';
            /*Data for the table `highcharts_php` */

            insert into highcharts_php (`id`,`run_name`,`cur_timestamp`,`my_point`) values ( 1, 'SSTP Keystone COOPER','2012-06-28 00:00:01', GeomFromText( ' POINT(0.6 70.18) ' ) )

* PHP コード*

            <?php
            $con = mysql_connect("localhost","root","xxxxxxxx");
            if (!$con)
              {
              die('Could not connect: ' . mysql_error());
              }

            mysql_select_db("graph", $con);
            /*$result = mysql_query("SELECT * FROM highcharts_php");*/
            $result = mysql_query("SELECT run_name,cur_timestamp, x( my_point ), y( my_point ) FROM highcharts_php LIMIT 0 , 30")or die 
            (mysql_error());
            echo "<table border='1'>
            <tr>
            <th>run_name</th>
            <th>my_point</th>
            <th>cur_timestamp</th>
            </tr>";

            while($row = mysql_fetch_array($result))
              {
              echo "<tr>";
              echo "<td>" . $row['run_name'] . "</td>";
              echo "<td>" . $row['my_point'] . "</td>";
              echo "<td>" . $row['cur_timestamp'] . "</td>";
              echo "</tr>";
              }
            echo "</table>";

            mysql_close($con);
            ?> 
4

3 に答える 3

4

2 つの計算列の列エイリアスが必要です。

$result = mysql_query("
  SELECT 
    run_name,
    cur_timestamp,
    /* Column aliases via AS */
    x( my_point ) AS my_point_x, 
    y( my_point ) AS my_point_y 
  FROM highcharts_php LIMIT 0 , 30") or die();

としてアクセスします$row['my_point_x'], $row['my_point_y']

列のエイリアスがなければ、リストに表示されたとおりに as に$row存在します。$row['x( my_point )'], $row['y (my_point)']SELECT

于 2012-06-29T16:30:05.820 に答える
1
SELECT run_name,
cur_timestamp, 
CONCAT(x( my_point ), ' ', y( my_point )) as my_point 
FROM highcharts_php LIMIT 0 , 30
于 2012-06-29T16:38:34.337 に答える
1

次のように、AS からの、および AS を使用しX()た戻り値にエイリアスを設定します。Y()

X( my_point ) AS x_value, Y( my_point ) AS y_value

次に、PHP で次のようにアクセスします。

$row['x_value']
$row['y_value']

それ以外の場合は、次の方法で列にアクセスする必要があります。

$row['X( my_point )']

またはそれに似たもの -ドキュメントの例を参照して、クエリに基づいて列名が動的に生成される方法を確認してください。

于 2012-06-29T16:30:03.343 に答える