0

由于某种原因,我是 php 编码的新手,我的代码没有在表中插入任何内容。我已经在这个问题上工作了几个小时,但我根本无法弄清楚。

我使用 php 我的管理员,我用它来生成一个 php 脚本(不是当前版本的代码),但这仍然不起作用。

<?

//data

$ID = $_GET['ID'];
$Type = $_GET['Type'];
$Name = $_GET['Name'];
$Addr = $_GET['Addr'];
$Phone = $_GET['Phone'];
$startDate = $_GET['startDate'];
$endDate = $_GET['endDate'];
$SRN = $_GET['SRN'];

//sql info
$user = $_GET['user'];
$pass = $_GET['pass'];

echo " 

Hostname: $ID
Dev_Type: $Type
User_Name: $Name
User_addr: $Addr
User_Phone: $Phone
DATE_START: $startDate
Date_END: $endDate
Square Recipt Number: $SRN

";



// sql insert

$con=mysqli_connect("mysql1098.servage.net",$user,$pass,"RC_DB");

mysqli_query($con,"INSERT INTO RC_DB.Current_Rentals (Hostname,Dev_Type,User_Name,User_Addr,User_Phone,Date_Start,Date_End,STOLEN,Square_Recipt_Number)
VALUES ($ID,$Type,$Name,$Addr,$Phone,$startDate,$endDate,'0',$SRN)");

mysqli_close($con);

?>

有任何想法吗?

4

2 回答 2

2

您需要在文本项周围加上撇号。这在过去也让我感到困惑。您没有将参数添加到函数中,而是引用将传递给 mysql 的文本。所以,$Name 应该是 '$Name'。尝试类似以下的操作:

mysqli_query($con, "INSERT INTO RC_DB.Current_Rentals 
(Hostname,Dev_Type,User_Name,User_Addr,User_Phone,Date_Start,Date_End,STOLEN,Square_Recipt_Number)
VALUES ('$ID','$Type','$Name','$Addr','$Phone','$startDate','$endDate','0','$SRN')");

编辑:我通常对 PHP SQL 语句进行故障排除的方法是回显文本,然后尝试在 phpMyAdmin 中运行代码。phpMyAdmin 通常会提供比 PHP 更好的错误消息。

var $text = "INSERT INTO ... (...) VALUES ('$ID', '$Type'...)";
echo $text;

完成此操作后,您可以将此文本变量添加到您的 mysqli_query 调用中,看看是否有效。

var $text = "INSERT INTO ... (...) VALUES ('$ID', '$Type'...)";
mysqli_query($con, $text);
于 2013-05-09T22:47:19.337 回答
0

您可能需要将要插入的值括在双引号中或使用 mysqli_real_escape_string 传递

mysqli_query($con,"INSERT INTO RC_DB.Current_Rentals (Hostname,Dev_Type,User_Name,User_Addr,User_Phone,Date_Start,Date_End,STOLEN,Square_Recipt_Number) VALUES (\"$ID\",\"$Type\",\"$Name\",\"$Addr\",\"$Phone\",\"$startDate\",\"$endDate\",'0',\"$SRN\")")

虽然 mysqli_real_escape_string 更好,因为它可以保护更多免受 SQL 注入。

编辑:根据 Remco 的第二条评论,请参阅此示例以了解正确的方法。

于 2013-05-09T22:28:12.243 回答