我有以下mysqli命令,它给出了错误信息
未知栏' rates_test'在' where子句'
$result1 = mysqli_query($con,"UPDATE Custom_Rates SET UserID=$id WHERE TableName =" . $assigntable);
$id
是另一个查询返回的数字
$assigntable
是传递给上述查询所在函数的字符串,但基本上是
$assigntable = array_search('Assign', $_POST);
因此将具有值rates_test
我无法弄清楚查询的语法有什么问题,如果我将其更改为
,甚至更奇怪$result1 = mysqli_query($con,"UPDATE Custom_Rates SET UserID=$id WHERE TableName ='$assigntable'");
这是我尝试的事情之一,我得到了
未知列'数组'在'字段列表'
$string = "UPDATE Custom_Rates SET UserID=$id WHERE TableName =".$assigntable;
输出
UPDATE Custom_Rates SET UserID = Array WHERE TableName = rates_test
$string = "UPDATE Custom_Rates SET UserID=$id WHERE TableName ='" . $assigntable . "'";
输出
UPDATE Custom_Rates SET UserID = Array WHERE TableName =' rates_test'
答案 0 :(得分:0)
从输出中可以看出这一点
UPDATE Custom_Rates SET UserID = Array WHERE TableName ='rates_test'
$id
不 另一个查询返回的数字。
所以这是你的问题。使用var_dump($id)
或print_r($id)
确定实数的位置,然后引用它(例如$id["number"]
)。
答案 1 :(得分:0)
而不是将您的值直接填充到查询中。
$stmt = mysqli_prepare($con,"UPDATE Custom_Rates SET UserID=? WHERE TableName=?");
$stmt->bindParam("ss",$id, $assigntable);
$stmt->execute();
必须是。
答案 2 :(得分:-1)
您应该使用某些东西来阻止SQL注入。你的第二次尝试会起作用,但看起来$ id的值不是你想象的那样!
尝试回显查询:
echo "UPDATE Custom_Rates SET UserID=$id WHERE TableName ='$assigntable'"
看看你得到了什么。
答案 3 :(得分:-2)
如果您确定rates_test
变量中有$assigntable
,请更改:
$result1 = mysqli_query($con,"UPDATE Custom_Rates SET UserID=$id WHERE TableName =" . $assigntable);
要:
$result1 = mysqli_query($con,"UPDATE Custom_Rates SET UserID=$id WHERE TableName ='" . $assigntable . "'");