【问题标题】:Trying to Understand Why Insert Mysql Returns False & How to Fix [duplicate]试图理解为什么 Insert Mysql 返回 False 以及如何修复 [重复]
【发布时间】:2018-07-28 21:50:51
【问题描述】:

我试图了解为什么我的插入返回 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_result->num_rows()吗?
  • 即使没有直接输入,当你有这么多函数将变量绑定到查询时,你仍然应该避免它。没有理由马虎。如果某些内容通过引用自动生成,并破坏了您的查询怎么办?
  • if (!$mysql_result) { echo mysqli_error($mysql_link); }。我的猜测是它与field8@2x有关。
  • 还有你的实际列名。如果有任何保留或包含特殊字符,则需要将它们封装在反引号中。

标签: php


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2016-06-20
      • 1970-01-01
      • 1970-01-01
      • 2020-03-19
      • 1970-01-01
      • 2021-06-19
      • 2016-07-12
      • 2015-06-24
      • 2021-12-24
      相关资源
      最近更新 更多