2013-03-08 264 views
1

我有一个以下类型的结构表。网址数据似乎很好。海湾值(B1 B2 B3)设置为整数类型1。通过PHP将数据添加到MySQL

DateToBook   | B1 | B2 | B3 | 
------------------------------------ 
    8March2013   | 1 | 1 | 1 | 

我无法获取插入的值。对于上述结构的baycount为3

<?php 
    $DB_hostname = "localhost"; 
    $DB_Name = "root"; 
    $DB_pass = "pass123"; 

    if(isset($_GET["tabName"])){ 
     $tableName = $_GET["tabName"]; 
     $dB = $_GET["db"]; 
     $bayCount = $_GET["bayNo"]; 
     $date = $_GET["d"]; 
     $b = '1'; 
    } 

    $con = mysql_connect($DB_Hostname,$DB_Name,$DB_pass) or die(mysql_error()); 


    mysql_select_db($db, $con); 

    $_bayColumn = array(); 
    for ($i = 1; $i <= $bayCount; $i++) { 
     $_bayColumn[] = "B$i"; 
    } 
    echo $_bayColumn[0]; 


    mysql_query("INSERT INTO $tableName (DateToBook) VALUES ($date)"); 


    for ($j =0; $j < $bayCount; $j++) { 

    mysql_query("UPDATE $tableName SET $_bayColumn[$j] = '$b' WHERE DateToBook = '$date'"); 


    } 




    mysql_close($con); 
    ?> 

有没有什么不妥的语法?

+6

您正在使用[**的**过时的数据库API(http://stackoverflow.com/q/12859942/19068),并应使用[现代更换](http://php.net/manual/ EN/mysqlinfo.api.choosing.php)。你也**易受[SQL注入攻击](http://bobby-tables.com/)**,现代的API会使[防御]更容易(http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php)自己从。 – Quentin 2013-03-08 09:19:41

+0

http://stackoverflow.com/tags/pdo/info – 2013-03-08 09:24:35

+0

我想你必须更换此line'为($ J = 0; $Ĵ<= $ bayCount; $ J ++){' – 2013-03-08 09:26:25

回答

1

您的问题是$b只有在下面的if语句存在。如果$b始终为1,你为什么不只是写在1您的查询,而不是$b

或者将其更改为以下:

$b = '1'; //Place it here 
if(isset($_GET["tabName"])){ 
    $tableName = $_GET["tabName"]; 
    $dB = $_GET["db"]; 
    $bayCount = $_GET["bayNo"]; 
    $date = $_GET["d"]; 
    $b = '1'; //You can get rid of this now 
} 

此外,我完全赞同的意见同意上述您应该使用库MySQLi或PDO

+0

baycount是整数类型。 “B1 INT NOT NULL DEFAULT 1”是这样做的吗? – DesperateLearner 2013-03-08 09:55:31

+1

如果B1默认为“1”,将它设置为“1”有什么意义? – AmazingDreams 2013-03-08 10:07:15

+0

是的!即使没有for循环,我也无法插入日期。 DateToBook是主键和类型的VARCHAR(11) – DesperateLearner 2013-03-08 10:51:14

0

您可以使用die("INSERT INTO $tableName (DateToBook) VALUES ($date)")检查,如果你长了正确的价值。