写入在线mysql数据库

时间:2014-01-04 19:29:58

标签: php android mysql database

在一个在线教程中,我找到了一种如何写入mysql在线数据库的方法。

这是我的php部分:

<?php
echo 'test';
$connect = mysql_connect("localhost","user","pwd","dbname");

if(mysql_connect_errno($connect))
{
    echo "Failed to connect to MySQL: " . mysql_connect_error();
}
else
{
    echo "success";
}

$name= isset($_POST['appname']) ? $_POST['appname'] : '';
$email= isset($_POST['appemail']) ? $_POST['appemail'] : '';

$query = mysql_query($connect, "insert into jagdenwilli(name, email) values ('$name' ,'$email') ");

mysql_close($connect);
?>

userpwd通常是我的mysql数据库的用户名和密码,dbname是我的数据库的名称(id,name,email,date)

这是我的android部分:

public void senden(){
    Toast t = Toast.makeText(this, "asd", Toast.LENGTH_SHORT);
    t.show();

    String name = "Herbert";
    String email = "herbert@gmail.com";
    HttpClient httpclient;
    HttpPost httppost;
    ArrayList<NameValuePair> nameValuePairs;


            httpclient = new DefaultHttpClient();
            httppost = new HttpPost("http://www.ff-ehrnsdorf.at/jagdenwilli.php");

            try
            {
                nameValuePairs = new ArrayList<NameValuePair>();
                nameValuePairs.add(new BasicNameValuePair("name", name));
                nameValuePairs.add(new BasicNameValuePair("email", email));

                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                HttpResponse response = httpclient.execute(httppost);
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
        }

我确信我访问的链接是正确的,但我的数据库中没有任何数据。也没有错误。我的错误在哪里?

2 个答案:

答案 0 :(得分:2)

看起来您的变量名称不匹配:

name&amp; Java端的email

在PHP端的请求参数查找中

vs appnameappemail

匹配它们你应该很高兴。

同样适用于您的连接语句:使用以下语法:

$handle = mysql_connect($host, $user, $pass);
@mysql_select_db($database) or die( "Unable to select database");

下面是一个简单的mysql配置示例:

$h = "127.0.0.1"; 
$u = "root"; 
$p = ""; 
$database = "gps";

$handle = mysql_connect($h, $u, $p);
@mysql_select_db($database) or die( "Unable to select database");
if (!$handle) {
    echo "Could not connect to server\n";
    trigger_error(mysql_error(), E_USER_ERROR);
} 

在您的情况下,您只需要更换$ u&amp; $ p,用户名和密码。您还需要将$ database替换为您的表所在的数据库/模式的名称。

答案 1 :(得分:1)

不要使用“mysql_query()”。

相反,您应该绝对使用预准备语句,而不是像PDO或MySQLi这样的API:

http://us1.php.net/pdo.prepared-statements

http://us1.php.net/mysqli_query

<?php
// EXAMPLE:
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':value', $value);

// insert one row
$name = 'one';
$value = 1;
$stmt->execute();

另外,根据MagicMan,确保表单中的参数与PHP中的变量名匹配,并且插入中的列名与数据库中的列名匹配。