Php 扫描已使用的用户名后将数据插入mysql
我对php非常陌生,我正在尝试将数据插入我的数据库。在我试图更新的数据库中已经有一个名为Locate的表,它有经度、纬度和ID列 首先,我下面的代码是否适合更新此表 其次,我想添加代码来检查数据库,并确保ID不是已经使用过的ID,提前谢谢Php 扫描已使用的用户名后将数据插入mysql,php,mysql,database,xcode,Php,Mysql,Database,Xcode,我对php非常陌生,我正在尝试将数据插入我的数据库。在我试图更新的数据库中已经有一个名为Locate的表,它有经度、纬度和ID列 首先,我下面的代码是否适合更新此表 其次,我想添加代码来检查数据库,并确保ID不是已经使用过的ID,提前谢谢 <?php $longitude = $_GET['longitude']; $latitude = $_GET['latitude']; $username = $_GET['username']; // Create connection
<?php
$longitude = $_GET['longitude'];
$latitude = $_GET['latitude'];
$username = $_GET['username'];
// Create connection
$con=mysqli_connect("localhost","dbuser","password","yviewdb");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql = "UPDATE CFP SET Longitude = '$longitude' AND Latitude = '$latitude' WHERE ID = '$username';";
$res = mysql_query($sql,$con) or die(mysql_error());
// Close connections
mysqli_close($con);
if ($res) {
echo "success";
}else{
echo "failed";
}
?>
您的代码有一些错误,如下几行:
$sql = "UPDATE CFP SET Longitude = '$longitude' AND Latitude = '$latitude' WHERE ID = '$username';";
$res = mysql_query($sql,$con) or die(mysql_error());
您正在使用MySQL_u和mysqli_u混合MySQL API,它们不会混合在一起
旁注:DB connection变量在mysqli_389;中是第一个变量,因此已经进行了更改以反映它。请参阅下面的修复程序
另外,在集合中使用AND而不是逗号作为分隔符来分隔要更新的两列
$sql = "UPDATE CFP SET Longitude = '$longitude', Latitude = '$latitude' WHERE ID = '$username';";
$res = mysqli_query($con,$sql) or die(mysqli_error($con));
您还太早关闭了DB连接,请在检查查询是否成功后放置它:
if ($res) {
echo "success";
}else{
echo "failed";
}
mysqli_close($con);
还要确保表单反映了变量的GET方法
另外,您当前的代码对用户开放。使用,或者,它们更安全
访问MySQL.com网站了解更新时的语法:
但是,您的问题标题读作插入数据。。。在你的问题中,我试图将数据插入我的数据库
如果要插入而不是更新,请执行以下操作
$sql = "INSERT INTO CFP (Longitude, Latitude) VALUES ('$longitude', '$latitude')";
有关如何插入表格的语法,请访问:
错误报告
添加到文件的顶部,这将有助于查找错误
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
旁注:错误报告只应在暂存阶段进行,而不应在生产阶段进行。您的代码有一些错误,如下几行:
$sql = "UPDATE CFP SET Longitude = '$longitude' AND Latitude = '$latitude' WHERE ID = '$username';";
$res = mysql_query($sql,$con) or die(mysql_error());
您正在使用MySQL_u和mysqli_u混合MySQL API,它们不会混合在一起
旁注:DB connection变量在mysqli_389;中是第一个变量,因此已经进行了更改以反映它。请参阅下面的修复程序
另外,在集合中使用AND而不是逗号作为分隔符来分隔要更新的两列
$sql = "UPDATE CFP SET Longitude = '$longitude', Latitude = '$latitude' WHERE ID = '$username';";
$res = mysqli_query($con,$sql) or die(mysqli_error($con));
您还太早关闭了DB连接,请在检查查询是否成功后放置它:
if ($res) {
echo "success";
}else{
echo "failed";
}
mysqli_close($con);
还要确保表单反映了变量的GET方法
另外,您当前的代码对用户开放。使用,或者,它们更安全
访问MySQL.com网站了解更新时的语法:
但是,您的问题标题读作插入数据。。。在你的问题中,我试图将数据插入我的数据库
如果要插入而不是更新,请执行以下操作
$sql = "INSERT INTO CFP (Longitude, Latitude) VALUES ('$longitude', '$latitude')";
有关如何插入表格的语法,请访问:
错误报告
添加到文件的顶部,这将有助于查找错误
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
旁注:错误报告只应在暂存阶段进行,而不应在生产阶段进行。首先,您不应使用GET请求对数据库进行更改。来自服务器的GET请求应仅用于查看数据,如在搜索请求或类似的情况下 接下来,您不会因为恶意代码而逃避提交的信息 最后,您正在混合使用mysql和MySQLIAPI,这并不会产生您想要的行为 无论如何,我不知道您的应用程序有多么复杂,所以我将按照您的要求进行必要的更正:
<?php
$longitude = $_GET['longitude'];
$latitude = $_GET['latitude'];
$username = $_GET['username'];
// Create connection
$con=mysqli_connect("localhost", "dbuser", "password", "yviewdb");
// Check connection
if (mysqli_connect_errno()){
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql = "UPDATE CFP SET Longitude = '$longitude', Latitude = '$latitude' WHERE ID = '$username'";
$res = mysqli_query($con, $sql) or die(mysql_error());
// Close connections
mysqli_close($con);
if($res){
echo "success";
}else{
echo "failed";
}
?>
变化:
1.您不需要在$sql变量的查询末尾放一个分号,只需关闭括号并将分号放在常规PHP语句的末尾
我使用了一些额外的格式,使您的代码更清晰
在MySQL的UPDATE语句中设置多个值时,请使用逗号,而不是“AND”
首先也是最重要的一点,您不应该使用GET请求对数据库进行更改。来自服务器的GET请求应仅用于查看数据,如在搜索请求或类似的情况下 接下来,您不会因为恶意代码而逃避提交的信息 最后,您正在混合使用mysql和MySQLIAPI,这并不会产生您想要的行为 无论如何,我不知道您的应用程序有多么复杂,所以我将按照您的要求进行必要的更正:
<?php
$longitude = $_GET['longitude'];
$latitude = $_GET['latitude'];
$username = $_GET['username'];
// Create connection
$con=mysqli_connect("localhost", "dbuser", "password", "yviewdb");
// Check connection
if (mysqli_connect_errno()){
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql = "UPDATE CFP SET Longitude = '$longitude', Latitude = '$latitude' WHERE ID = '$username'";
$res = mysqli_query($con, $sql) or die(mysql_error());
// Close connections
mysqli_close($con);
if($res){
echo "success";
}else{
echo "failed";
}
?>
变化:
1.您不需要在$sql变量的查询末尾放一个分号,只需关闭括号并将分号放在常规PHP语句的末尾
我使用了一些额外的格式,使您的代码更清晰
在MySQL的UPDATE语句中设置多个值时,请使用逗号,而不是“AND”
您没有在$sql变量的查询末尾放一个分号-如果是单个查询,分号就可以了,没有语法错误,它是有效的。mysql\u错误需要是mysqli\u错误$conOh yea,您是对的Fred,没有捕捉到那个错误。我刚才在读你的回答,我们的思路是一样的;我认为你的答案更全面,所以应该使用你的答案。任何有助于回答其他问题的答案。许多人会干脆投反对票,一句话也不说
ng。另一方面,当评论是否有任何错误或是否有改进的余地时,我喜欢将其视为一种贡献。干杯,不要在$sql变量的查询末尾加分号-如果是单个查询,分号就可以了,没有语法错误,它是有效的。mysql\u错误必须是mysqli\u错误$conOh是的,你说得对,Fred,没有捕捉到那个错误。我刚才在读你的回答,我们的思路是一样的;我认为你的答案更全面,所以应该使用你的答案。任何有助于回答其他问题的答案。许多人会干脆投反对票,一言不发。另一方面,当评论是否有任何错误或是否有改进的余地时,我喜欢将其视为一种贡献。干杯