我想从表单中获取电子邮件地址,酒店名称和费率值,并插入评级表。当将数据插入到费率表时,它应该从用户表中插入电子邮件地址的用户名。
这是我试过的PHP代码。
if (!empty($_POST)) {
$userName = "";
$sql = "select name from user where email='$_POST[user]'";
$query1 = mysql_query($sql,$con);
while ($row = mysql_fetch_array($query1))
{
$userName = $row;
echo $userName;
}
$rest_name = $_POST['name'];
$user_name = $_POST['user'];
$rate = $_POST['Rate'];
$query = "INSERT INTO rates(rest_name,user,rate) values ('$_POST[name]','".$userName"','$_POST[Rate]')";
$query2 = mysql_query($query,$con);
$response["success"] = 1;
$response["message"] = "Rate Successfully Added!";
echo json_encode($response);
}
但它不起作用。任何人都可以帮助我吗?
答案 0 :(得分:1)
您需要连接字符串,因为数组不能自动连接。您需要为两个mysql语句执行此操作。你也应该使用mysqli_query而不是mysql_query,因为不推荐使用mysql_query。
您还必须执行第二个mysql语句。清理用户输入以避免SQL注入攻击也是一个好主意。为此,我已经包含了mysql_real_escape_string函数。
您的查询还需要$ row [“name”],我已添加。
if (!empty($_POST)) {
$userName = "";
$sql = "select name from user where email='".mysql_real_escape_string($_POST['email'])."'";
$query1 = mysql_query($sql,$con);
while ($row = mysql_fetch_array($query1))
{
$userName = $row["name"];
echo $userName;
}
$rest_name = $_POST['name'];
$user_name = $_POST['user'];
$rate = $_POST['Rate'];
$query = "INSERT INTO rates (rest_name, user, rate) values ('".mysql_real_escape_string($_POST['name'])."','".mysql_real_escape_string($userName)."','".mysql_real_escape_string($_POST['Rate'])."')";
$rs = mysql_query($query, $con);
$response["success"] = 1;
$response["message"] = "Rate Successfully Added!";
echo json_encode($response);
}
答案 1 :(得分:1)
此处您没有将数据传递给$ userName。这是你如何做到的:
while ($row = mysql_fetch_array($query1))
{
$userName = $row['name'];
echo $userName;
}
在插页中你也有一些语法错误。 它应该是这样的:
$query = "INSERT INTO rates(rest_name,user,rate) values ('".$_POST['name']."','".$userName"','".$_POST['Rate']."')";
你也忘了使用
mysql_query($query);
答案 2 :(得分:0)
我已将您放入查询中的所有POST参数放在mysql_real_escape_string()
个函数中。但是,如果可以,您应该切换到mysqli或PDO。在这里阅读为什么这是一个好主意:How can I prevent SQL injection in PHP?
我添加了$query2 = mysql_query($query, $con)
,以便执行第二个查询。
<?php
if (!empty($_POST)) {
$userName = "";
$sql = "SELECT name FROM user WHERE email='".mysql_real_escape_string($_POST[user])."'";
$query1 = mysql_query($sql, $con);
while ($row = mysql_fetch_array($query1)) {
$userName = $row["name"];
echo $userName;
}
$rest_name = $_POST['name'];
$user_name = $_POST['user'];
$rate = $_POST['Rate'];
$query = "INSERT INTO rates(rest_name, user, rate) values ('".mysql_real_escape_string($rest_name)."','".mysql_real_escape_string($userName)"','".mysql_real_escape_string($rate)."')";
if($query2 = mysql_query($query, $con)) {
$response["success"] = 1;
$response["message"] = "Rate Successfully Added!";
echo json_encode($response);
} else {
$response["success"] = 0;
$response["message"] = "MySQL Error";
}
}