2012-08-01 55 views
0

我使用下面的INSERT命令在我的数据库表称为demo_organizationMySQL数据库不插入值

$sql = "INSERT INTO demo_organization (org_name, abn_acn_no, org_url,city, 
        state, country, pin, street, primary_mobile, 
        secondary_mobile, primary_landline, 
        secondary_landline, primary_email, secondary_email) 

      VALUES ($org_name, $abn_acn_no, $org_url, $city, $state, $country, 
        $pin, $street, $primary_mobile, $secondary_mobile, 
        $primary_landline, $secondary_landline, $primary_email, 
        $secondary_email)"; 

$result = mysql_query($sql) or die (mysql_error()); 

在PHP 插入值,但我收到错误,如

你有一个错误你的SQL语法;第012行: 大道,+ 6190567890,+ 89685552'在第2行附近'://loc.com,Melburn,Melburn,Australia,56007,123园区 '对应于您的MySQL服务器版本的正确语法使用

我完全新的PHP MySQL的请告诉我,我做错了

回答

2

你缺少周围的文本值单引号:

insert into demo (org_name, abn_acn_no) values ('$org_name', abn_acn_no); 
// assumes that abn_acn_no is numeric. 

您也可以将空的变量不传递到查询。如果您没有它,则需要将其作为, null,插入,而不是作为无值的变量 - 这会导致SQL不会接受的, , - 即使该列接受空值。

+0

@MBJ不在SQL查询中,它不会。如果在查询中有'3,$ yourVar,3'(和'$ yourvar ='testing'',那么查询将看起来像'3,testing,3',由于字符串没有被封装,所以它不会被mysql接受引号内。 – Fluffeh 2012-08-01 12:46:57

+0

$ SQL =“INSERT INTO demo_organization(ORG_NAME,org_url,abn_acn_no,城市,州,国家,脚,街道,primary_mobile,secondary_mobile,primary_landline,secondary_landline,PRIMARY_EMAIL,SECONDARY_EMAIL) \t \t VALUES( '$ ORG_NAME', '$ org_url', '$ abn_acn_no', '$城市', '$状态', '$国家', '$针', '$街', '$ primary_mobile', '$ secondary_mobile', '$ primary_landline', '$ secondary_landline','$ primary_email','$ secondary_email')“; 我也试过这个,但得到相同的错误 – user1481793 2012-08-01 12:50:32

+0

@ user1481793你可能有一个空字段,你可以用'echo $ sql;'传递给'mysql_query'函数,这会告诉你你是什么 失踪。如果你缺少字段,你需要在它们的位置插入一个'null'。 – Fluffeh 2012-08-01 12:53:20

1

如果要使用MySQL,你需要躲避值mysql_escape_string($string)

没有与查询所提供的网址问题,请尝试逃脱,并再次运行。

否则,MySQL是变得贬值,使用的mysqli或PDO

http://php.net/manual/en/book.mysqli.php

http://php.net/manual/en/book.pdo.php

+0

这应该是正确的答案。 – tadman 2012-08-01 14:57:52

+0

谢谢:)它似乎是投票的答案,没有得到积极的反馈无论如何 – mlishn 2012-08-01 15:05:51

+0

我只是试图回答MySQL的问题和PHP世界似乎*完全无视*如何正确逃脱SQL。我只是尽我的本分来推动这种鲁莽的行为,很高兴看到你也是。 – tadman 2012-08-01 15:31:20

0

你的代码是vulverable与SQL注入。我会推荐MYSQLiPDO。但无论如何,你的价值观是string format should be wrap with single quotes

$sql = "INSERT INTO demo_organization (org_name, abn_acn_no, org_url,city, 
       state, country, pin, street, primary_mobile, 
       secondary_mobile, primary_landline, 
       secondary_landline, primary_email, secondary_email) 
     VALUES ('$org_name', 'abn_acn_no, '$org_url', '$city', ..., 
       '$secondary_email')"; 
+0

你推荐'mysqli'和PDO是正确的,但是由于这个答案对于SQL注入来说是非常脆弱的,所以这是不正确的。你应该像你所建议的那样使用占位符。 – tadman 2012-08-01 14:57:31