Php 试图理解为什么Insert-Mysql返回False&;如何修复

Php 试图理解为什么Insert-Mysql返回False&;如何修复,php,Php,我试图理解为什么我的Insert返回false而未找到结果 $mysql_link=mysqli_connect(host,user,dbpswd,dbname); if (mysqli_connect_errno()){echo "Failed to connect to MySQL: " . mysqli_connect_error();} // Never shows mysqli_set_charset($mysql_link,"utf8"); ... echo $TableName;

我试图理解为什么我的Insert返回false而未找到结果

$mysql_link=mysqli_connect(host,user,dbpswd,dbname);
if (mysqli_connect_errno()){echo "Failed to connect to MySQL: " . mysqli_connect_error();} // Never shows
mysqli_set_charset($mysql_link,"utf8");
...
echo $TableName; // Outputs correct table name
echo $flds; // Outputs correct field names, didn't include id field, as auto generated
field1, field2, field3, field4, field5, field6, field7, field8@2x, field9, field10, field11

echo $str; // Outputs correct field values, didn't include id value
'***', '0', '0.0', '2018-07-28', '16:42:00', '0.00', 'you@yoursite.com', '***', '../rw_common/plugins/stacks/myimage.png', 'https://www.google.com', '***'

$query="INSERT INTO ".$TableName."(".$flds.") VALUES (".$str.")";
$mysql_result = mysqli_query($mysql_link,$query);

if ($mysql_result->num_rows > 0) {echo 'record found';}
else {echo 'query ok but no results found';} // Outputs this line !
if ($mysql_result===false) // Resolves to false 
还有什么我可以检查的,以及如何解决这个问题吗

更新1:

echo $query: Outputs this:
INSERT INTO mytable3(field1, field2, field3, field4, field5, field6, field7, field8@2x, field9, field10, field11) VALUES ('***', '0', '0.0', '2018-07-28', '16:55:00', '0.00', 'you@yoursite.com', '***', '../rw_common/plugins/stacks/myimage.png', 'https://www.google.com', '***')
更新2:

echo $query:
INSERT INTO mytable3(`field1`, `field2`, `field3`, `field4`, `field5`, `field6`, `field7`, `field8@2x`, `field9`, `field10`, `field11`) VALUES ('***', '0', '0.0', '2018-07-28', '17:15:00', '0.00', 'you@yoursite.com', '***', '../rw_common/plugins/stacks/myimage.png', 'https://www.google.com', '***')

因此,对于那些可能有类似问题的人来说:您需要将字段用反勾号包装,以说明使用特殊字符或保留名称的人。另外,我发现一个字段没有被输入,这也破坏了插入;)

当查询检查并与数据库进行比较时,出现了一个遗忘字段-不匹配是导致错误的原因。

echo$query
并在phpmyadmin中运行它(或直接在数据库上运行)。另外,它不是
$mysqli\u result->num\u rows()
?即使没有直接输入,当有这么多函数将变量绑定到查询时,也应该避免直接输入。没有理由马虎。如果某个东西用引号自动生成,并打断了您的查询怎么办?
if(!$mysql\u result){echo mysqli\u error($mysql\u link);}
。我猜这与
field8@2x
。还有您的实际列名。如果有保留字符或包含特殊字符,则需要将其封装在反勾号中。