2013-04-04 30 views
1

我試圖從使用Get語句一個PHP URL傳遞多個值。我覺得它應該很簡單。我設法通過一個變量罰款,但第二個變量總是以某種原因結束爲NULL。傳遞多個值從PHP URL到單個行中的SQL表

這裏是我的代碼:

<?php 

$DB_HostName = "localhost"; 
$DB_Name = "prototype3DB"; 
$DB_User = "root"; 
$DB_Pass = "root"; 
$DB_Table = "sqlTable"; 


if (isset ($_GET["date"])) 
$date = $_GET["date"]; 
else 
$date = "null"; 

    if (isset ($_GET["fname"])) 
    $fname = $_GET["fname"]; 
    else 
    $fname = "null"; 


    $con = mysql_connect($DB_HostName,$DB_User,$DB_Pass) or die(mysql_error()); 
    mysql_select_db($DB_Name,$con) or die(mysql_error()); 


    $sql = "insert into $DB_Table (date, fname) values ('$date','$fname')"; 

    $res = mysql_query($sql,$con) or die(mysql_error()); 

    mysql_close($con); 
    if ($res) { 
     echo "success"; 
    }else{ 
     echo "failed"; 
    }// end else 
?> 

日期變量總是被傳遞到數據庫,但FNAME是結束了NULL的一個。 我有種感覺這是一個語法問題,但我再次對PHP很陌生。

基本上,我覺得這條線的問題是:

$sql = "insert into $DB_Table (date, fname) values ('$date','$fname')"; 

我感謝所有幫助。

謝謝。

+1

附註:我_really_希望你不要在你的應用程序中使用root用戶。把它與你的SQL注入漏洞結合起來,你就搞砸了。 – 2013-04-04 19:29:20

+0

運行一個'print_r($ _ GET)'來確保你正確地傳遞它......它應該給你一個'$ _GET'值的數組。 – brbcoding 2013-04-04 19:33:52

+0

向我們展示您嘗試傳遞給它的連接字符串?減去域名,當然。 – 2013-04-04 19:45:49

回答

0

嘗試......

$sql = "insert into $DB_Table (date, fname) values ('$date','".$fname."')"; 

有時,這些額外的引號解決問題...笑

但科林是正確的太....這裏的漏洞是相當明顯的。希望你只是測試的東西.. :)

+0

感謝這工作,是的,這只是要通過本地主機運行到本地數據庫進行演示。 – 2013-04-04 20:59:40

0

請使用PDO或庫MySQLi而不是mysql_*功能。我喜歡PDO和有用的信息可以在這裏找到:http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developershttp://us.php.net/manual/en/pdostatement.bindvalue.php

對於一個快速入門檢查驗證碼:

<?php 

// Credentials. DSN is a string defining how to connect to the DB 
$DB_DSN = "mysql:dbname=myDatabase;host=127.0.0.1"; 
$DB_USER = "myUser"; 
$DB_PASSWD = "myPassword"; 

// Make the connection and get a handle for talking to the db 
$db = new PDO($DB_DSN, $DB_USER, $DB_PASSWD); 

// Make query into a prepared statement. Protects us from SQL injection. 
// Use placeholders like :status and :id where we will be inserting variables 
$statement = $db->prepare(' 
    UPDATE users 
    SET status = :status 
    WHERE id = :id '); 

// Associate vars with the placeholders in our query 
// Define the type of valus such as string or int with the third param 
$statement->bindValue(':id',  $_GET['id'],  PDO::PARAM_INT); 
$statement->bindValue(':status', $_GET['status'], PDO::PARAM_STR); 

// Actually run the query 
$statement->execute(); 
相關問題