2014-03-03 29 views
0
session_start(); 

$CompanyName = $_POST['CompanyName']; 
$result = mysqli_query ("select CustomerID from CompanyInfo where CompanyName = '.$CompanyName.'"); 
$row = mysql_fetch_row($result); 
$_SESSION["CustomerID"] = $row[0]; 

我有一種感覺,在我的引用有問題,但我無法弄清楚。MYSQL查詢調用POST變量

謝謝。

+1

請在編寫任何**更多SQL接口代碼之前,您必須閱讀[正確的SQL轉義](http://bobby-tables.com/php)以避免嚴​​重的[SQL注入臭蟲(http://bobby-tables.com/)。當使用'mysqli'時,您應該使用參數化查詢和['bind_param'](http://php.net/manual/en/mysqli-stmt.bind-param.php)將用戶數據添加到您的查詢中。 **避免**使用字符串插值來完成此操作。 **從不**將'$ _POST'數據直接放入查詢中。 – tadman

+2

是的,這是錯誤的,你很容易受到[sql注入攻擊](http://bobby-tables.com)。真正解決你問題的方法是從根本上改變你寫查詢的方式。你也在混合mysqli(注意** i **)和mysql(no ** i **)調用,這也是不可能的。換句話說,你的代碼完全被破壞了。 –

+0

你已經在使用'mysqli'。好! (部分地,正如Marc B所注意到的那樣)進一步使用它並使用參數綁定。隨機StackOverflow示例在這裏:http://stackoverflow.com/questions/15748254/how-to-run-the-bind-param-statement-in-php – GolezTrol

回答

1

看起來像除了你的報價被全亂了,代碼破

試試這個

$result = mysqli_query ($link, "select CustomerID from CompanyInfo where CompanyName = '$CompanyName'"); 
$row = mysqli_fetch_row($result); 


mysqli_query()預計,至少2個參數
$鏈接被連接字符串我肯定是在某個地方的代碼調用。如果它不是這可能是問題#1

,應該給你從輸出:

echo "row: " .$row[0]; 

,你可以把信息傳給會話。

$_SESSION["CustomerID"] = $row[0]; 
-1

試試這個:

mysqli_query ("select CustomerID from CompanyInfo where CompanyName = '".$CompanyName."'); 

需要關閉雙引號。

+0

您在單引號後末尾忘記了雙引號。這是一個開放的字符串,在解析時會失敗。 – sjagr

0
$CompanyName = $_POST['CompanyName']; 
$result = mysqli_query ("select CustomerID from CompanyInfo where CompanyName ='" .$CompanyName."'"); 
$row = mysqli_fetch_row($result); 
$_SESSION['CustomerID'] = $row[0]; 
0

是的。

$result = mysqli_query ("select CustomerID from CompanyInfo where CompanyName = '".$CompanyName."'"); 

注意額外的報價來連接字符串,或者你有可能會在而放棄點,只是做

$result = mysqli_query ("select CustomerID from CompanyInfo where CompanyName = '$CompanyName'"); 

您還應該使用mysqli_real_escape_string防止SQL注入,或使用PDO。你的問題的意見會給你足夠的資源,但我只是你的問題的範圍之內回答