Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL&;PHP插入查询失败_Php_Mysql_Database_Insert - Fatal编程技术网

MySQL&;PHP插入查询失败

MySQL&;PHP插入查询失败,php,mysql,database,insert,Php,Mysql,Database,Insert,我知道仅仅通过一些测试,这里没有足够的验证$结果总是返回空?我的问题不好吗?我是PHP新手,将变量连接到字符串并不是我完全掌握的东西。使用OOP表单,因为我非常熟悉它和概念 而且,我知道这段代码非常草率。。。只是想直接跳进去=) ` $page=新页面(); $page->title=“添加新项目”; $page->DisplayHeader(); $page->DisplaySidebar(); 如果(isset($_POST['submit'])) { //使变量名简短 $name=trim

我知道仅仅通过一些测试,这里没有足够的验证$结果总是返回空?我的问题不好吗?我是PHP新手,将变量连接到字符串并不是我完全掌握的东西。使用OOP表单,因为我非常熟悉它和概念

而且,我知道这段代码非常草率。。。只是想直接跳进去=) `
$page=新页面();
$page->title=“添加新项目”;
$page->DisplayHeader();
$page->DisplaySidebar();
如果(isset($_POST['submit']))
{
//使变量名简短
$name=trim($_POST['name']);
$level=intval($_POST['level']);
$slot=strtolower($_POST['slot']);
$hp=intval($_POST['hp']);
$mana=intval($_POST['mana']);
$mvs=intval($_POST['mvs']);
$int=intval($_POST['int']);
$wis=intval($_POST['wis']);
$str=intval($_POST['str']);
$dex=intval($_POST['dex']);
$con=intval($_POST['con']);
$p_ac=intval($u POST['p_ac']);
$m_ac=intval($u POST['m_ac']);
$saves=intval($_POST['saves']);
$hit=intval($_POST['hit']);
$dam=intval($_POST['dam']);
$queryOk=1;
if(空($name)| |空($level)| |空($slot))
{
echo“请输入所有必填字段”;
$queryOk=0;
}
//实例化数据库对象并连接
@$db=newmysqli(“*host*”、“*user*”、“*pass*”、“*database*”);
//检查到的连接
if(mysqli\u connect\u errno()){
echo“错误:无法连接到数据库,请稍后重试”;
}
$query=“插入物品(名称、等级、槽位、生命值、法力值、mvs、智力值、wis、str、dex、con、p_ac、m_ac、保存、命中、dam)”。
“V值(“$name”、$level、$slot”、$hp、$mana、$mvs、$int、$wis、$str、$dex、$con、$p_ac、$m_ac、$saves、$hit、$dam)”;
$result=$db->query($query);
如果(!$result)
{
echo'错误:未输入项目。(您的网站管理员很差劲)';
}
否则{
echo“项目\“$name\”已成功输入数据库。

”; } $db->close(); }`
如果
V值中的空格实际位于代码中,则会导致查询失败

更新

如果这不是错误的原因,请使用
$mysqli->error
查看发生了什么错误

if (!$result)
{
    echo '<h3>'$mysqli->error'  (Your webmaster sucks)</h3>';
}
if(!$result)
{
回显“$mysqli->错误”(你的网站管理员很差劲);
}
int
是mysql中的一个字段名,您将其用作字段名。您必须使用反勾号来逃避:

INSERT INTO ... (..., `int`, ...)
                      ^---^-- escapes

您的查询:

INSERT INTO items (name, level, slot, hp, mana, mvs, int, wis, str, dex, con, p_ac, m_ac, saves, hit, dam)
                                                     ^^^^--- problem here
VALUES ('$name', $level, '$slot', $hp, $mana, $mvs, $int, $wis, $str, $dex, $con, $p_ac, $m_ac, $saves, $hit, $dam)";
                                                   ^^^^^---NOT here

从$db中删除@并查看是否抛出任何错误。为什么V和值之间有空格,值不是一个单词吗?你比我快了几秒钟+1哦,对不起,我不知道这里为什么会这样,但它不在源代码中。该空间不在源代码中。删除了符号,但未显示任何错误。(您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解使用接近'int、wis、str、dex、con、p_ac、m_ac、saves、hit、dam)值的正确语法('test',7',light',在第1行没有输入项。好的,这是一个SQL错误。尝试在单词value之前加一个空格,看看会发生什么。不,不是你正在输入的值。是文本字段名。对你来说,它可能意味着“智能”,但对MySQL来说,它是“整数”。我在查询中的值中替换了它,如您所解释的那样?这不正确吗?不,这不正确。请参阅我上面的编辑。请注意,我的原始示例中缺少
$
。例如,我指的是您正在使用的字段的名称,而不是您正在插入该字段的值。字段…不是变量。@Marc B:'它可能表示“智能”对你来说,但对MySQL来说,它是“整数”。我认真地笑了出来
INSERT INTO items (name, level, slot, hp, mana, mvs, int, wis, str, dex, con, p_ac, m_ac, saves, hit, dam)
                                                     ^^^^--- problem here
VALUES ('$name', $level, '$slot', $hp, $mana, $mvs, $int, $wis, $str, $dex, $con, $p_ac, $m_ac, $saves, $hit, $dam)";
                                                   ^^^^^---NOT here