【问题标题】:Inserting into mySQL with PHP but nothing shows up in phpmyadmin使用 PHP 插入 mySQL 但 phpmyadmin 中没有任何显示
【发布时间】:2016-07-30 09:23:23
【问题描述】:

在尝试插入 mySQL 数据库时,我没有收到任何错误,但 phpmyadmin 查询中没有显示任何内容。这是我试图插入的 php 文件的代码。我知道这不是最好的方法,但这是我目前所拥有的。

<?php

require 'steamauth/steamauth.php';
require 'php/main.php';
require 'php/db.php';

$title = $_POST["title"];
$desc = $_POST["desc"];
$date = $_POST["date"];
$skills = $_POST["skills"];
$budget = $_POST["budget"];
$tc = $_POST["tc"];
$steamid = $steamprofile['steamid'];
$steamname = $steamprofile['personaname'];
$avatar = $steamprofile['avatarmedium'];
$dateposted = date("m-d-y");


// insert into db

if(1==1){

  $insert = $link->query("INSERT INTO livepost (title, desc, date, skills, budget, tc, steamid, steamname, avatar, dateposted)
  VALUES ('$title', '$desc', '$date' , '$skills' , '$budget', '$tc', '$steamid', '$steamname', '$avatar', '$dateposted')");

  header('Location: index');

} else {

  header('Location: index?insertdidntwork');

}

【问题讨论】:

  • 你怎么知道没有错误,是显示错误吗?你的代码最后有输出吗?它重定向但这是什么页面,与重定向相同。你怎么能重定向到index 或者index.php 或者你正在重写网址。
  • 我打开了 error_reporting 只是为了确保如果发生错误我可以看到错误,访问时页面是空白的,是的,我正在重写 URL。
  • @StenCooley 查看您的网络服务器的错误日志文件。也许你在那里找到一些输出
  • 你还有一堆SQL注入漏洞......
  • @StenCooley - 然后错误报告未开启,error_reporting(E_ALL); ini_set('display_errors', -1); 或者更好的是,回显该查询并将其粘贴到 phpmyadmin,让我知道它是否有效......准备好的语句不会解决问题,它是最好在数据库中尝试查询并删除所有 PHP 代码。一旦你让查询工作,然后从那里工作。我会在你定义$insert 之后立即执行echo $insert;。如果 echo 无法打印,则说明语法错误,您也可以通过这种方式检查数据是否正确。

标签: php mysql phpmyadmin


【解决方案1】:

date 和 desc 在 mysql 中是 keywords。您必须转义列名:

  $insert = $link->query("INSERT INTO livepost (title, `desc`, `date`, skills, budget, tc, steamid, steamname, avatar, dateposted)
  VALUES ('$title', '$desc', '$date' , '$skills' , '$budget', '$tc', '$steamid', '$steamname', '$avatar', '$dateposted')");

提示 1:了解 prepre statemts7

提示 2:执行 SQL 语句后检查错误。

提示 3:您的 if else 语句没有检查插入是否有效。

【讨论】:

  • date 是关键字... desc 是保留字。仍然是+1 ...大声笑
  • @StenCooley - 错误报告和显示错误是两个独立的东西,ini_set('display_errors', -1);
【解决方案2】:

也许你可以试试这个 你应该总是使用 $mysqli->error() 函数来知道你有什么类型的错误

   <?php
$title = $_POST["title"];
$desc = $_POST["desc"];
$date = $_POST["date"];
$skills = $_POST["skills"];
$budget = $_POST["budget"];
$tc = $_POST["tc"];
$steamid = $steamprofile['steamid'];
$steamname = $steamprofile['personaname'];
$avatar = $steamprofile['avatarmedium'];
$dateposted = date("m-d-y");
// insert into db
if (1 == 1) {
    $insert = $link ->query("INSERT INTO livepost (`title`,`desc`,`date`,`skills`,`budget`,`tc`,`steamid`,`steamname`,`avatar`,`dateposted`)

    VALUES ('".$title."', '".$desc."', '".$date."' , '".$skills."' , '".$budget."', '".$tc."', '".$steamid."', '".$steamname."', '".$avatar."', '".$dateposted."')") or die($mysqli -> error . __LINE__);
    header('Location: index');
} else {
    header('Location: index?insertdidntwork');
}
?>

【讨论】:

  • 谢谢!这修复了它并将数据插入到数据库中。
【解决方案3】:

@Jens 已经提到了keywords

使用准备好的语句。

<?php
if(1==1){

  $insert = $link->prepare("INSERT INTO livepost (title, `desc`, `date`, skills, budget, tc, steamid, steamname, avatar, dateposted) VALUES (?,?,?,?,?,?,?,?,?,?)");
  $insert->bind_param("sss",$title,$desc,$date,$skills,$budget,$tc,$steamid,$steamname,$avatar,$dateposted );
  $insert->execute();

  header('Location: index');

} else {

  header('Location: index?insertdidntwork');

}

可能是我认为这一行的问题。 $dateposted = date("m-d-y");

$dateposted = date("Y-m-d"); 日期应为Y-m-d 格式。

像这样尝试一次。并且,请回复。

【讨论】:

  • 它吐出这个错误“致命错误:未捕获的错误:在 H:\Websites\Xampp\htdocs\Freelanceforskins\post.php:27 中调用布尔值上的成员函数 bind_param() 堆栈跟踪: #0 {main} 在第 27 行的 H:\Websites\Xampp\htdocs\Freelanceforskins\post.php 中抛出“
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-21
  • 2013-08-08
  • 2020-07-29
  • 1970-01-01
  • 1970-01-01
  • 2012-12-22
  • 1970-01-01
相关资源
最近更新 更多