Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从外部服务器使用Javascript连接到PHP MySQL_Php_Javascript_Html - Fatal编程技术网

从外部服务器使用Javascript连接到PHP MySQL

从外部服务器使用Javascript连接到PHP MySQL,php,javascript,html,Php,Javascript,Html,好的,问题出在这里。我有以下PHP代码 <?php $con=mysqli_connect("example.com","peter","abc123","my_db"); // Check connection if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } $result = mysqli_query($con,"SELECT

好的,问题出在这里。我有以下PHP代码

    <?php
$con=mysqli_connect("example.com","peter","abc123","my_db");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$result = mysqli_query($con,"SELECT * FROM Persons");

echo "<table border='1'>
<tr>
<th>Firstname</th>
<th>Lastname</th>
</tr>";

while($row = mysqli_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['FirstName'] . "</td>";
  echo "<td>" . $row['LastName'] . "</td>";
  echo "</tr>";
  }
echo "</table>";

mysqli_close($con);
?>

上面的javascript可以工作,但只有在数据库所在的服务器上才能工作。我需要的是让Javascript在另一个位置工作,而PHP仍然可以存储在主服务器上。

您需要发出跨域请求(其中一些)

您需要发出跨域请求(其中一些)

尝试使用$.ajax发出跨域请求,如下所示:

$.ajax({
type: "GET",
crossDomain:true,
url: "phpscripthere.com/myphp.php"
});

尝试使用跨域true的$.ajax发出请求,如下所示:

$.ajax({
type: "GET",
crossDomain:true,
url: "phpscripthere.com/myphp.php"
});

请不要将此标记为答案,因为它不是

但这与我们的建议相当

这是病毒的传播

$con=mysqli_connect("example.com","peter","abc123","my_db");
// Check connection
if (mysqli_connect_errno())
{
   echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
在此脚本中,即使连接失败,处理仍将继续

您应该包括更多的故障检查,并按如下方式退出:

if (mysqli_connect_errno())
{
   echo "Failed to connect to MySQL: " . mysqli_connect_error();
   exit(0);
}
你也不知道

$result = mysqli_query($con,"SELECT * FROM Persons");
查询成功

除了这些陷阱

您最好为页面收集数据,并将其编码为JSON并发送到客户端。。详情如下:

$r = array();
while(true){
    $row = mysqli_fetch_array($result);
    if(!$row)break;
    $r[] = json_encode((object)$row);
}
echo json_encode($r);

forming [  {"firstName":"John", "lastName": "Smith"}, 
           {"firstName":"Abraham", "lastName":"Lincoln"}, ...etc ]

then upon receiving decode the data in js and inject to your page.

当然,使用ajax跨域请求(不太安全)或让您的服务器与其他服务器对话(更安全)来解决您的问题。

请不要将此标记为答案,因为它不是

但这与我们的建议相当

这是病毒的传播

$con=mysqli_connect("example.com","peter","abc123","my_db");
// Check connection
if (mysqli_connect_errno())
{
   echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
在此脚本中,即使连接失败,处理仍将继续

您应该包括更多的故障检查,并按如下方式退出:

if (mysqli_connect_errno())
{
   echo "Failed to connect to MySQL: " . mysqli_connect_error();
   exit(0);
}
你也不知道

$result = mysqli_query($con,"SELECT * FROM Persons");
查询成功

除了这些陷阱

您最好为页面收集数据,并将其编码为JSON并发送到客户端。。详情如下:

$r = array();
while(true){
    $row = mysqli_fetch_array($result);
    if(!$row)break;
    $r[] = json_encode((object)$row);
}
echo json_encode($r);

forming [  {"firstName":"John", "lastName": "Smith"}, 
           {"firstName":"Abraham", "lastName":"Lincoln"}, ...etc ]

then upon receiving decode the data in js and inject to your page.

当然,使用ajax跨域请求(不太安全)或让您的服务器与其他服务器对话(更安全)来解决您的问题。

如果您是从W3Schools学习这方面的知识,听起来可能有点复杂,但不要泄气:)

无论如何,正如@LoneWOLFs在一篇评论中所说,您可能还可以在JavaScript来自的同一台服务器上设置另一个PHP页面,并在另一台远程服务器上进行该页面调用


基本上,您的新PHP脚本将执行与旧脚本类似的操作—从某个远程位置调用一些数据。然后它会将数据传回调用它的浏览器。

如果你是从W3Schools学习这些东西,听起来可能有点复杂,但不要气馁:)

无论如何,正如@LoneWOLFs在一篇评论中所说,您可能还可以在JavaScript来自的同一台服务器上设置另一个PHP页面,并在另一台远程服务器上进行该页面调用



基本上,您的新PHP脚本将执行与旧的一个类似的操作——从一些远程位置调用一些数据。然后它会将数据传回调用它的浏览器。

Javascript有一个跨域策略,阻止请求进入其他域。您需要启用CORS或使用JSONP来实现此功能。供参考,您也可以使用ajax在服务器上调用一个页面,该页面通过使用CURL获取远程页面。这里应该注意,使用JSONP时会失去安全性,即没有post,因此所有发布的数据都将向用户、中间的所有路由器和web服务器公开,Javascript有一个跨域策略,阻止向其他域发送请求。您需要启用CORS或使用JSONP来实现此功能。供参考,您也可以使用ajax在服务器上调用一个页面,该页面通过使用CURL获取远程页面。这里应该注意,使用JSONP时会失去安全性,即没有post,因此所有发布的数据都将向用户、中间的所有路由器和web服务器公开,他们每个人都在记录信息。教人们正确的东西很好,但这应该是一个答案还是一个评论?等等,剩下的就来了。我不是在追求销售代表,我开始一次又一次地遇到同样的事情。谢谢你的建议。我知道W3Schools只不过是他们的老师,而不一定是他们的老师来提供最佳实践。@Ihsan等一下。我有点迷路了。那么让我看看我是否可以发布一个我从你那里得到的示例,看看我是否理解你;while(true){$row=mysqli_fetch_数组($result);if(!$row)break;$r[]=json_encode(object($row));}echo json_encode($r);形成[{“firstName”:$row['firstName'],“lastName”:$row['lastName']}]我发布的内容与您相同,但我用变量替换了John,用变量替换了Smith。我也很可能会给它添加一个循环,因为数据库总是在变化。教人们正确的东西很好,但这应该是一个答案还是一个评论?等等,剩下的就来了。我不是在追求销售代表,我开始一次又一次地遇到同样的事情。谢谢你的建议。我知道W3Schools只不过是他们的老师,而不一定是他们的老师来提供最佳实践。@Ihsan等一下。我有点迷路了。那么让我看看我是否可以发布一个我从你那里得到的示例,看看我是否理解你;while(true){$row=mysqli_fetch_数组($result);if(!$row)break;$r[]=json_encode(object($row));}echo json_encode($r);形成[{“firstName”:$row['firstName'],“lastName”:$row['lastName']}]我发布的内容与您相同,但我用变量替换了John,用变量替换了Smith。我也很可能会给它添加一个循环,因为数据库总是在变化的。它看起来很像Javascript。然而,我还有一些其他问题,AJAX应该在中还是应该被引用?如果它在一个单独的文件中,我应该给AJAX什么扩展名。JS?您可以在中调用上述ajax方法,也可以在*code here*部分中调用其他部分