用 PHP 查询 MySQL
Query MySQL with PHP
我正在尝试使用 PHP 和 return 查询 MySQL 数据库,结果为 JSON。我是 PHP 和网络开发的新手,所以我不确定自己做错了什么。我已经使用 MAMP 设置了数据库。正在打印我的参数,但我没有收到 JSON。在教程的帮助下,我已经走到这一步了。
编辑:我刚刚进入 phpMyAdmin 以确保它正常工作,当我单击 Server:localhost:8889 时,会弹出一个 window,提示处理请求时出错。错误代码 404。
我认为这就是问题所在,我只是不确定为什么它不起作用。我可能会重新安装 MAMP。
<?php
$user = 'root';
$password = 'root';
$db = 'TestDB';
$host = '127.0.0.1';
$port = '8889';
$first_name = filter_input(INPUT_GET, 'first_name');
$last_name = filter_input(INPUT_GET, 'last_name');
$membership_number = filter_input(INPUT_GET, 'membership_number');
echo $first_name;
echo $last_name;
echo $membership_number;
// Create connection
// $con = mysqli_connect("localhost", "root", "root", "TestDB");
// $con = mysqli_connect("localhost", "root", "root", "TestDB", "8889", $socket);
$link = mysqli_init();
$con = mysqli_real_connect($link, $host, $user, $password, $db, $port);
// Check connection
if(mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql = "SELECT * FROM NAME WHERE FIRST_NAME = \'$first_name\' and LAST_NAME = \'$last_name\' and MEMBERSHIP_NUMBER = \'$membership_number\'";
$result = mysqli_query($con, $sql);
if(!$result) {
die('Query failed: ' . mysqli_error());
}
// Check for results
// if ($result = mysqli_query($con, $sql)) {
if($result) {
// If there are results, create results array and a temporary one to hold the data
$resultArray = array();
$tempArray = array();
// Loop through each row in the result set
// while($row = $result->fetch_object()) {
while($row = mysqli_fetch_object($result)) {
// Add each row to the results array
$tempArray = $row;
array_push($resultArray, $tempArray);
}
echo $tempArray;
echo $resultArray;
echo $result;
echo json_encode($resultArray);
}
// Close connections
mysqli_close($con);
?>
您似乎在使用过程式编码
而不是
while($row = $result->fetch_object()) {
你需要mysqli_fetch_object
程序风格
while($row = mysqli_fetch_object($result)) {
您需要更改 $sql
变量以删除单引号上的转义符。它们注册为字符串的一部分,因为您使用双引号将其括起来。基本上,您是在告诉数据库 运行 查询“SELECT * FROM NAME WHERE FIRST_NAME = \'John\' and LAST_NAME = \'Smith\' and MEMBERSHIP_NUMBER = \'VRX78435\'
”。如果你直接 运行 它会出错,因为转义字符没有转义。
$sql = "SELECT * FROM NAME WHERE FIRST_NAME = '$first_name' and LAST_NAME = '$last_name' and MEMBERSHIP_NUMBER = '$membership_number'";
这应该可以为您解决。
您与服务器的连接也可能存在问题。 mysqli_query()
将 mysqli_connect()
的结果用于 运行 查询。 mysqli_real_connect()
只有 returns 一个布尔值,所以它对于这个特定用途是无效的(至少它在我的服务器上不起作用)。
替换 $con
很简单,然后您可以删除 $link
变量。
$con = mysqli_connect($host, $user, $password, $db, $port);
这些更改,并假设 $first_name
、$last_name
和 $membership_number
都有效,允许您的脚本对我来说 运行,所以我希望这对您有所帮助.
我正在尝试使用 PHP 和 return 查询 MySQL 数据库,结果为 JSON。我是 PHP 和网络开发的新手,所以我不确定自己做错了什么。我已经使用 MAMP 设置了数据库。正在打印我的参数,但我没有收到 JSON。在教程的帮助下,我已经走到这一步了。
编辑:我刚刚进入 phpMyAdmin 以确保它正常工作,当我单击 Server:localhost:8889 时,会弹出一个 window,提示处理请求时出错。错误代码 404。
我认为这就是问题所在,我只是不确定为什么它不起作用。我可能会重新安装 MAMP。
<?php
$user = 'root';
$password = 'root';
$db = 'TestDB';
$host = '127.0.0.1';
$port = '8889';
$first_name = filter_input(INPUT_GET, 'first_name');
$last_name = filter_input(INPUT_GET, 'last_name');
$membership_number = filter_input(INPUT_GET, 'membership_number');
echo $first_name;
echo $last_name;
echo $membership_number;
// Create connection
// $con = mysqli_connect("localhost", "root", "root", "TestDB");
// $con = mysqli_connect("localhost", "root", "root", "TestDB", "8889", $socket);
$link = mysqli_init();
$con = mysqli_real_connect($link, $host, $user, $password, $db, $port);
// Check connection
if(mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql = "SELECT * FROM NAME WHERE FIRST_NAME = \'$first_name\' and LAST_NAME = \'$last_name\' and MEMBERSHIP_NUMBER = \'$membership_number\'";
$result = mysqli_query($con, $sql);
if(!$result) {
die('Query failed: ' . mysqli_error());
}
// Check for results
// if ($result = mysqli_query($con, $sql)) {
if($result) {
// If there are results, create results array and a temporary one to hold the data
$resultArray = array();
$tempArray = array();
// Loop through each row in the result set
// while($row = $result->fetch_object()) {
while($row = mysqli_fetch_object($result)) {
// Add each row to the results array
$tempArray = $row;
array_push($resultArray, $tempArray);
}
echo $tempArray;
echo $resultArray;
echo $result;
echo json_encode($resultArray);
}
// Close connections
mysqli_close($con);
?>
您似乎在使用过程式编码
而不是
while($row = $result->fetch_object()) {
你需要mysqli_fetch_object
程序风格
while($row = mysqli_fetch_object($result)) {
您需要更改 $sql
变量以删除单引号上的转义符。它们注册为字符串的一部分,因为您使用双引号将其括起来。基本上,您是在告诉数据库 运行 查询“SELECT * FROM NAME WHERE FIRST_NAME = \'John\' and LAST_NAME = \'Smith\' and MEMBERSHIP_NUMBER = \'VRX78435\'
”。如果你直接 运行 它会出错,因为转义字符没有转义。
$sql = "SELECT * FROM NAME WHERE FIRST_NAME = '$first_name' and LAST_NAME = '$last_name' and MEMBERSHIP_NUMBER = '$membership_number'";
这应该可以为您解决。
您与服务器的连接也可能存在问题。 mysqli_query()
将 mysqli_connect()
的结果用于 运行 查询。 mysqli_real_connect()
只有 returns 一个布尔值,所以它对于这个特定用途是无效的(至少它在我的服务器上不起作用)。
替换 $con
很简单,然后您可以删除 $link
变量。
$con = mysqli_connect($host, $user, $password, $db, $port);
这些更改,并假设 $first_name
、$last_name
和 $membership_number
都有效,允许您的脚本对我来说 运行,所以我希望这对您有所帮助.