将变量添加为表名 SQL/PHP 时出现问题



我的代码遇到了一些问题。它以前工作过,但现在似乎根本不想工作。

PHP 行如下:(出于保护目的,所有敏感数据均已更改(

<?php
$servername = "*****";
$server_username = "*****";
$server_password = "*****";
$dbName = "*****";
$tableName = $_POST["tableNamePost"];
$variable1 = $_POST["variable1Post"];
$variable2 = $_POST["variable2Post"];
$variable3 = $_POST["variable3Post"];
$variable4 = $_POST["variable4Post"];
$variable5 = $_POST["variable5Post"];
$conn = new mysqli($servername, $server_username, $server_password, $dbName);
if(!$conn)
{
die("Connection Failed" .mysqli_connect_error());
}
$sql = "INSERT INTO ".$tableName." VALUES ('".$variable1."', '".$variable2."', '".$variable3."', '".$variable4."', '".$variable5."', '0', '0', '0', '0')";
$result = mysqli_query($conn, $sql);
?>

tableName 的所有变量都是匹配的,因为它们是程序本身中的静态变量。C# 代码段如下所示:(同样,出于保护目的,所有敏感数据都已更改(

public string tableName;
public int var1;
public string var2;
public string var3;
public string var4;
public int var5;
public float var6;
public float var7;
string AddToTableURL = "http://urlofthe.php"; //The actual link has been tested and works fine.
public void FunctionInQuestion()
{
float i = (var7 / 60.0f * var6);
var5 = Mathf.FloorToInt(i);
WWWForm form = new WWWForm();
form.AddField("tableNamePost", tableName);
form.AddField("dayNumberPost", var1.ToString());
form.AddField("dueDayPost", var2);
form.AddField("timeOfTheDayPost", var3);
form.AddField("choreNamePost", var4);
form.AddField("pointsOnOfferPost", var5.ToString());
WWW www = new WWW(AddToTableURL, form);
NextFunction();
}

我遇到的问题是定义变量的 C# 正确运行,但我无法确定 PHP 是否正在接收变量。每次运行脚本时,都不会向数据库中添加任何内容。

是否遗漏了某些内容或写错了什么?我已经检查了几天的代码,找不到问题。

您必须编写用于调试的 PHP 代码来检查发生了什么,或者读取 PHP 错误和数据库服务器错误日志(如果在服务器上启用(。

据我从这段代码中看到的,我们有:tableName (C#( 为 null。

此外,根据您运行的 MySQL 服务器版本,可能会出现没有将表名放在正确的引号中的问题 - 尝试在 PHP 端像这样输入"$tableName"。

另外,检查您用于数据库连接的字符集 - 如果$tableName有一些 Unicode 字符或其他东西?

以防万一在 INSERT INTO 调用中制作完整的 database.tablename 路径 - 也许你在 PHP 端的其他地方选择了另一个数据库。

我要仔细检查的最后一件事:您确定要将这些零作为 varchar/text 值而不是整数插入吗?删除它们周围的引号。


更新 1:您确定将 HTTP POST 方法与表单 (C#( 一起使用吗? 我在您的代码中看不到您正在将 POST 设置为 WWW 表单对象的方法。

更新2:放置mysqli调试代码以查看SQL执行/语法中是否也存在错误。

从 PHP 文档 (http://php.net/manual/en/mysqli.quickstart.statements.php( 中查看此示例:

<?php
$mysqli = new mysqli("example.com", "user", "password", "database");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
if (!$mysqli->query("DROP TABLE IF EXISTS test") ||
!$mysqli->query("CREATE TABLE test(id INT)") ||
!$mysqli->query("INSERT INTO test(id) VALUES (1)")) {
echo "Table creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
?>

试试这种形式的 INSERT INTO 命令。

最新更新