PHP代码不将数据插入MySQL数据库

时间:2014-08-08 14:20:25

标签: php mysql mysqli

基本上我一直在摸不着头脑,我仍然无法弄清楚它为什么不插入。

我100%确定数据库已连接,因为它正好提取信息,但是以下代码无法在数据库中插入任何内容。我已经检查了拼写错误,我已经从弃用的PHP代码等进行检查,并使用了mysqli和mysql。

<?php 

include_once "settings.php";


if (isset($_POST['sendMessage']) && isset($_POST['messageTo']) && isset($_POST['messageBody'])){

    $messageTo = mysql_real_escape_string($_POST['messageTo']);
    $messageBody = mysql_real_escape_string($_POST['messageBody']);

    $query= "INSERT INTO inbox (`msgTo`, `msgFrom`, `msgBody`)
         VALUES('$messageTo', '$username', '$messageBody')";

    if(mysql_query($query))
        echo "done.";
    else
        echo "Problem with Query";
}
?>
            <form method="POST">

        <div class="searchContain">
          <input name="textfield" type="text" name="messageTo" class="input search"><br />

          <textarea placeholder="Your message..." name="messageBody" class="input sendmsg" ></textarea><br />

          <button class="input" name="sendMessage">Send Message</button>
        </div>

        </form> 

的settings.php:

<?php 
session_start();
include_once "../more/config/connect.php";
// Settings //


function logincheck(){
if (!isset($_SESSION['username'])){
    header("location: ../index.php");
}
}

logincheck();

$username=$_SESSION['username'];

$gatherInfo=mysql_query("SELECT * FROM users WHERE username='$username' LIMIT 1");
$fetch=mysql_fetch_object($gatherInfo);

?>

connect.php:

<?php 

// Connect to the server //
date_default_timezone_set('Europe/London');
mysql_connect("localhost", "root", "connected") or die (mysql_error ());

mysql_select_db("ts") or die(mysql_error());
?>

如果有人能帮助我解决这个相当基本的菜鸟错误,我将非常感激!

更新

基本上在更改代码之后。我已经通过MAMP面板并更改了错误,以便显示。它给了我以下错误消息:

  

警告:mysql_connect():无法通过socket&#39; /Applications/MAMP/tmp/mysql/mysql.sock'连接到本地MySQL服务器; (2)

在我之前从未遇到过这个错误,有什么想法吗?它似乎从数据库中获取数据就好了,所以我不确定原因。

2 个答案:

答案 0 :(得分:0)

尝试将您的查询更改为

$query= "INSERT INTO `inbox` (`msgTo`, `msgFrom`, `msgBody`) 
     VALUES('$messageTo', '$username', '$messageBody')";

答案 1 :(得分:0)

您可以尝试以下

if (isset($_POST['sendMessage']) && isset($_POST['messageTo']) && isset$_POST['messageBody'])){

    $messageTo = mysql_real_escape_string($_POST['messageTo']);
    $messageBody = mysql_real_escape_string($_POST['messageBody']);

    $query= "INSERT INTO inbox ('msgTo', 'msgFrom', 'msgBody') 
         VALUES('$messageTo', '$username', '$messageBody')";

    if(mysql_query($query))
        echo "done.";
    else
        echo "Problem with Query";
}
  1. 列名应采用单引号“
  2. 您应该检查mysql_query以获得成功回复。
  3. 不要一次又一次地调用相同的函数,即mysql_real_escape_string被调用了2次同样的事情。或者将其分配给变量,但您无需转义值以检入if条件