将PHP表单插入Mysql数据库时出错

时间:2017-08-08 01:11:06

标签: php mysql model-view-controller

离开它一段时间后,我又开始研究这个项目了。我发誓当我离开它时它起作用了,但我似乎在向数据库中添加条目,删除和编辑工作时仍然出错。我想我已经把它缩小到我的“创建”功能。

read()

try循环似乎给我一个错误,无论如何,我认为这是因为它没有正确读取信息?

如果我在try循环中注释掉if语句,则另一个在尝试添加时会导致错误。因此,即使我输入了信息,它也告诉我需要完成所有字段,就像在try循环中所说的那样。知道为什么它会卡住吗?我似乎无法弄明白。如果您需要更多信息,请告知我们,并提前感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

有很多事情发生,但我看到的最大问题是这个

 gettype($rent_cost OR $rental_duration OR $level)

这种事情

is_numeric($rent_cost OR $rental_duration OR $level)

这些不会引发错误,但他们也不会做你想要的。他们所做的是评估该条件,它会为函数调用返回布尔值truefalse。因此,这就是你得到的。

is_numeric( true );
//or (doesn't matter neither are numeric )
is_numeric( false );

使用gettype时,您可以清楚地看到这一点,因为它告诉您类型。我冒昧地在PHP沙盒中这样做,所以你可以在这里看到自己

http://sandbox.onlinephpfunctions.com/code/f18746e94d3d492c8f5428208408d62685b72c39

事实上,这也是一个有用的例子。

echo is_numeric(1 OR 2) ? 'true' : 'false';

下面:

http://sandbox.onlinephpfunctions.com/code/52aa6e11b1923ef57d27d36dd74b0b07dedccf5c

即使false1都是数字,也会输出2。这是因为你在函数调用中进行的boolean比较,做了什么?它返回的boolean值不是numeric(正如我之前所说)。首先发生这种情况然后然后由函数is_numeric吃掉它的结果,并且很好地给它一个沮丧的肚子......哈哈。

补救措施正如其他人所说的那样,但没有用太多的话来解释,就是将它们分开。

if( is_numeric( $var1 ) || is_numeric( $var1 ) )

等...

现在,我并不关心答案,但你似乎不理解其中的原因,所以我认为谨慎地引导你完成它。

这是一个容易犯的错误,因为没有错误抛出,这是逻辑问题,而不是语法问题。

答案 1 :(得分:1)

你的if语句的语法略有不同,尝试了一下这句话:

if(!is_numeric($rent_cost) || !is_numeric($rental_duration))

并且

if($name == "" || $cost == "")