MySQL和AJAX在一个而不是另一个

时间:2015-09-14 14:33:58

标签: javascript php jquery mysql ajax

我正在使用AJAX对包含要添加到数据库的信息的PHP脚本进行“加载调用”,脚本是这样的:

<?php

$create_tables = "
CREATE TABLE IF NOT EXISTS `user` (
`id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
`name` varchar(255) NOT NULL UNIQUE,
`password` varchar(255) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `user_details`
(
`id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
`email_address` varchar(255) NOT NULL UNIQUE,
`address1` varchar(500) NULL,
`address2` varchar(500) NULL,  
`address3` varchar(500) NULL,
`postcode` VARCHAR(10) NULL
) ENGINE=InnoDB AUTO_INCREMENT=2 CHARSET=latin1;

INSERT IGNORE INTO `user` (`id`, `name`, `password`) VALUES (1, 'admin', '704b037a97fa9b25522b7c014c300f8a');
INSERT IGNORE INTO `user_details` (`id`, `email_address`) VALUES (1, 'sam.swift@fifteendigital.co.uk');
";

function cre($query)
{
    $link = new mysqli();
    $link->real_connect("localhost", "root", "", "overr");
    return $link->query($query) ? "true" : "false";
}

print cre($create_tables);

?>

因此调用AJAX:

function _ajax( u, t )
{
    $.ajax( {
        url: u,
        type: "GET",
        success: function ( r )
        {
            $( "#test" ).html( r );
            console.log( r );
            return r;
        },
        beforeSend: function ()
        {
            $( t ).html( "Loading" );
        }
    } );
}

$( document ).ready( function ()
{
    _ajax( "aj/tables.php", "#null" );
} );

当我在phpmyadmin中调用查询时,它工作得很完美,但是当我从加载页面通过AJAX调用它时,控制台会被记录为“false”,我怎样才能使脚本执行并返回true即使数据库中根本没有任何内容,我仍然会将“错误”返回给客户端。

这样做的目的是在完成任何事情之前设置环境以确保一切正常并且正常工作,此系统将来会发生变化,但是现在我只需要让它工作

2 个答案:

答案 0 :(得分:4)

使用mysqli::multi_query()而不是mysqli::query()

  

http://php.net/manual/en/mysqli.multi-query.php

答案 1 :(得分:0)

尝试,

  1. 分隔每个查询或使用multiquery功能。

  2. 避免使用INSERT IGNORE,因为您将无法收到错误。请改为INSERT...ON DUPLICATE