如何创建视图和获取数据mysql PHP javascript


how to create view and get data mysql php javascript

我有数据库'testdatabase',并希望创建一个从表' testtablee '列'值'的视图,然后想要在之前创建的视图值中求和行。然后将其存储在javascript数组中。我已经把这个代码,但不知道我在哪里犯了错误。它没有显示任何东西,甚至没有一个空白的消息框。

<script>

    var data=[
    <?php

$connection =mysql_connect("localhost","root","") or die ("we couldn't connect!");
mysql_select_db("testdatabase");
$query = mysql_query("CREATE VIEW view1 AS SELECT value FROM testtable") or die(mysql_error());
mysql_fetch_array($query);
$r2 = mysql_query("SELECT SUM(value) FROM view1;") or die(mysql_error());
 while($row = mysql_fetch_array($r2))
 {
       echo $row['value'].',';
     }
     ?>];

    window.alert(data);
    </script>

将函数添加到返回列时,返回列的名称会发生变化。强制声明的名称'作为值'应该起作用:

"SELECT SUM(value) as value FROM view1;"

完整回答:

<script>
var data=[
<?php

$connection =mysql_connect("localhost","root","") or die ("we couldn't connect!");
mysql_select_db("testdatabase");
$query = mysql_query("CREATE OR REPLACE VIEW view1 AS SELECT value FROM testtable") or die(mysql_error());
$r2 = mysql_query("SELECT SUM(value) as value FROM view1;") or die(mysql_error());
 while($row = mysql_fetch_array($r2))
 {
   echo $row['value'].',';
 }
 ?>];

window.alert(data);
</script>

首先,您将PHP代码嵌套在JavaScript函数中,这是一个非常糟糕的主意。如果继续这样编码,就会出现难以追踪的错误。如果在JavaScript中需要数据,可以输出PHP结果或使用AJAX检索值。

下面是一个更清晰的例子:

<?php
$connection =mysql_connect("localhost","root","") or die ("we couldn't connect!");
mysql_select_db("testdatabase");
$query = mysql_query("CREATE OR REPLACE VIEW view1 AS SELECT value FROM testtable") or die(mysql_error());
$r2 = mysql_query("SELECT SUM(value) as value FROM view1;") or die(mysql_error());
$result = mysql_fetch_array($r2); // there is only one result
?>
<script>
    var data = [ <?php echo $result['value']; ?> ];
</script>

如注释中所述,mysql_*函数已被弃用,并已在PHP 7中删除。任何使用PHP的人都应该学习如何将预处理语句与MySQLi API一起使用,或者最好是PDO API。使用预处理语句的另一个好处是可以防止SQL注入攻击。

第二,'value'是MySQL关键字。您应该更改列的名称。如果您坚持保留列的名称,则必须使用反勾号来区分它:

CREATE VIEW `view1` AS SELECT `value` FROM `testtable`
SELECT SUM(`value`) FROM `view1`

此外,在创建视图的第一个查询之后不需要获取数组。您没有在任何地方使用CREATE的结果。