Php MySQL查询出错了
你能告诉我在这个简单的问题中我犯了什么错误吗Php MySQL查询出错了,php,mysql,Php,Mysql,你能告诉我在这个简单的问题中我犯了什么错误吗 $q = "UPDATE users SET ".$aItemSlot." = '$seton' WHERE username='$us'"; $r = @mysqli_query($dbc, $q); $q = "UPDATE items SET item_position='3' WHERE it_id='$seton'"; $r = @mysqli_query($dbc, $q); 错误- 1064-您的SQL语
$q = "UPDATE users SET ".$aItemSlot." = '$seton' WHERE username='$us'";
$r = @mysqli_query($dbc, $q);
$q = "UPDATE items SET item_position='3' WHERE it_id='$seton'";
$r = @mysqli_query($dbc, $q);
错误-
1064-您的SQL语法有错误;检查手册
对应于您的MySQL服务器版本,以便使用正确的语法
near ''$aItemSlot' = '$seton' WHERE username='$us'' at line 1
这是我的消息来源
$q = "SELECT * FROM users WHERE username='$us'";
$r = @mysqli_query($dbc, $r);
$row = mysqli_fetch_array($r);
$aHelmet_Slot = $row['helmet_slot'];
$aShield_Slot = $row['shield_slot'];
$aWeapon_Slot = $row['weapon_slot'];
$aGloves_Slot = $row['g1loves_slot'];
$aShoes_Slot = $row['shoes_slot'];
$aArmor_Slot = $row['armor_slot'];
$aEar_Slot = $row['ear_slot'];
$aBelt_Slot = $row['belt_slot'];
$aRing1_Slot = $row['ring1_slot'];
$aRing2_Slot = $row['ring2_slot'];
$aRing3_Slot = $row['ring3_slot'];
$aRing4_Slot = $row['ring4_slot'];
$aCharLevel = $row['char_lvl'];
if ($aItemSlot == 'ring_slot'){
if($aCharLevel >= $aItem_Level){
$NotEmpty = false;
if ($aRing1_Slot == 0){
$q = "UPDATE users SET ring1_slot='$seton' WHERE username='$us'";
$r = @mysqli_query($dbc, $q);
$NotEmpty = true;
}
if (($aRing2_Slot == 0) && (!$NotEmpty)){
$q = "UPDATE users SET ring2_slot='$seton' WHERE username='$us'";
$r = @mysqli_query($dbc, $q);
$NotEmpty = true;
}
if (($aRing3_Slot == 0) && (!$NotEmpty)){
$q = "UPDATE users SET ring3_slot='$seton' WHERE username='$us'";
$r = @mysqli_query($dbc, $q);
$NotEmpty = true;
}
if(($aRing4_Slot == 0) && (!$NotEmpty)){
$q = "UPDATE users SET ring4_slot='$seton' WHERE username='$us'";
$r = @mysqli_query($dbc, $q);
$NotEmpty = true;
}
if(!$NotEmpty){
$q = "UPDATE items SET item_position='2' WHERE it_id='$aRing1_Slot'";
$r = @mysqli_query($dbc, $q);
$q = "UPDATE users SET ring1_slot='$seton' WHERE username='$us'";
$r = @mysqli_query($dbc, $q);
$NotEmpty = true;
}
$q = "UPDATE items SET item_position='3' WHERE it_id='$seton'";
$r = @mysqli_query($dbc, $q);
}
}
else
{
if ($aCharLevel >= $aItem_Level){
$link_slot_var = "a" .$aItemSlot;
$aSlotItemID = $$link_slot_var;
if($aSlotItemID <> 0){
$q = "UPDATE items SET item_position='2' WHERE it_id='$aSlotItemID'";
$r = @mysqli_query($dbc, $q);
}
$q = "UPDATE users SET '$aItemSlot' = '.$seton.' WHERE username='$us'; // it fails there
$r = @mysqli_query($dbc, $q);
$q = "UPDATE items SET item_position='3' WHERE it_id='$seton'";
$r = @mysqli_query($dbc, $q);
}
}
$q=“从用户名为“$us”的用户中选择*;
$r=@mysqli_查询($dbc,$r);
$row=mysqli\u fetch\u数组($r);
$aHelmet_Slot=$row['helmet_Slot'];
$aShield_Slot=$row['shield_Slot'];
$aWeapon_Slot=$row[‘武器_Slot’];
$aGloves_Slot=$row['g1loves_Slot'];
$aShoes_Slot=$row['shoes_Slot'];
$aArmor_槽=$row['armor_槽];
$aEar_插槽=$row['ear_插槽];
$aBelt_Slot=$row['belt_Slot'];
$aRing1_插槽=$row['ring1_插槽'];
$aRing2_插槽=$row['ring2_插槽'];
$ARIG3_插槽=$row['ring3_插槽'];
$aRing4_插槽=$row['ring4_插槽'];
$aCharLevel=$row['char_lvl'];
如果($aItemSlot=='ring\u slot'){
如果($aCharLevel>=$aItem_级别){
$NotEmpty=false;
如果($aRing1\U插槽==0){
$q=“updateusers SET ring1\u slot='$seton',其中username='$us';
$r=@mysqli_查询($dbc,$q);
$NotEmpty=true;
}
如果($aRing2_Slot==0)和(!$NotEmpty)){
$q=“UPDATE users SET ring2\u slot='$seton',其中username='$us';
$r=@mysqli_查询($dbc,$q);
$NotEmpty=true;
}
如果($ARIG3_插槽==0)和(!$NotEmpty)){
$q=“updateusers SET ring3\u slot='$seton',其中username='$us';
$r=@mysqli_查询($dbc,$q);
$NotEmpty=true;
}
如果($aRing4_Slot==0)和(!$NotEmpty)){
$q=“UPDATE users SET ring4\u slot='$seton',其中username='$us';
$r=@mysqli_查询($dbc,$q);
$NotEmpty=true;
}
如果(!$NotEmpty){
$q=“updateitems SET item\u position='2',其中它的\u id='$aRing1\u Slot';
$r=@mysqli_查询($dbc,$q);
$q=“updateusers SET ring1\u slot='$seton',其中username='$us';
$r=@mysqli_查询($dbc,$q);
$NotEmpty=true;
}
$q=“updateitems SET item\u position='3',其中它的id='$seton';
$r=@mysqli_查询($dbc,$q);
}
}
其他的
{
如果($aCharLevel>=$aItem_级别){
$link\u slot\u var=“a”。$aItemSlot;
$aSlotItemID=$$link\u slot\u var;
如果($aSlotItemID 0){
$q=“updateitems SET item\u position='2',其中它的\u id='$aSlotItemID';
$r=@mysqli_查询($dbc,$q);
}
$q=“updateusers SET'$aItemSlot'='。$seton.”其中username='$us';//在那里失败
$r=@mysqli_查询($dbc,$q);
$q=“updateitems SET item\u position='3',其中它的id='$seton';
$r=@mysqli_查询($dbc,$q);
}
}
您错过了分配操作员:
UPDATE users SET " . $aItemSlot . " = '" . $seton . "' WHERE username='$us'";
您的查询应如下所示:
"UPDATE users SET " . $aItemSlot . "='$seton' WHERE username='$us'";
^ assignment operator
$mysqli->query("Update users
set aItemSlot = '$seton'
where username = $us
") ;
这是一个有效语法..在进行查询之前,您必须确保这些参数有效
$sql = "UPDATE users SET {$aItemSlot} = '{$seton}' WHERE username = '{$us}'";
为什么使用表名作为变量
{$aItemSlot}
一般来说,应该是这样的:
"UPDATE users SET " . $aItemSlot . "='$seton' WHERE username='$us'";
^ assignment operator
$mysqli->query("Update users
set aItemSlot = '$seton'
where username = $us
") ;
此外,尝试使用
更新
更新与此表相关的行:
UPDATE [LOW_PRIORITY] [IGNORE] table_reference
SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
UPDATE语句更新命名表中现有行的列
使用新值。SET子句指示要修改和删除的列
应该给出的值。每个值都可以作为
表达式,或关键字DEFAULT,将列显式设置为其
默认值。WHERE子句(如果给定)指定了条件
标识要更新的行。如果没有WHERE子句,则所有行都是
更新。如果指定了ORDER BY子句,则在中更新行
指定的顺序。LIMIT子句对
可以更新的行数
您还可以执行覆盖多个表的更新操作
UPDATE items,month SET items.price=month.price
WHERE items.id=month.id;
更新2
您需要检查/更新每一行
$stmt = $mysqli->prepare("UPDATE table SET col1 = ?, col2 = ?, col3 = ? WHERE id = ? ")
$stmt->bind_param('sssi', $var1, $var2, $var3, $id);
这说明了什么。试试这个,肯定会有用的
$q = "UPDATE users SET ".$aItemSlot." = " . $seton . " WHERE username= " . $us;
mysql数据库字段名前面不应该有$符号,它应该是这样的
UPDATE users SET aItemSlot = '".$seton."' WHERE username='".$us."'
以上述格式修改查询并尝试执行,您需要做一些轻微的调整 PHP/SQL
底部注释:因为
$aItemSlot
以“a”开头,我想知道这是否是一个数组。在这种情况下,您的脚本将失败,说明数组到字符串的转换失败。如果是这种情况,请使用var_dump()检查$aItemSlot
所包含的值
赋值运算符。你的引号也错了。我认为你需要同时阅读-PHP和MYSQL语法!用PHP代码发布你的原始查询同样的错误,#1064-你的SQL语法有错误;检查与你的MYSQL服务器版本对应的手册,以获得正确的语法$艾特姆槽。" = '" . $西顿。“'WHERE username='$us''在第1行,$aItemSlot是错误的表字段名,或者其他2个值没有转义!此语法是正确的。非常感谢,我将再次查看我的表$aItemSlot,首先我将从我的表中以$aItemSlot=$row['item_slot\u name'的形式检索此表”然后我尝试对它进行一些操作$aItemSlot应该是表中字段的名称..item\u slot\u name可能..不是从数据库中获取的值这意味着首先我必须用一些数据填充我的表?请让我试试,我这样做是因为item\u slot\u name不在表用户中,它在另一个表中table@mally-给我一点时间,我将尝试不工作,表之间相互引用,其他查询正确工作为我提供:show create table users;show create table items;或者我可以给出我的$aItemSlot源吗?您是否尝试过打印$aItemSlot,它有什么值?是的,我正在通过函数DrawItem、weap打印值on显示在我的清单中,但没有戴上,PHPE