2014-09-26 116 views
0

我想總結Mysql中使用PHP與mysqli和準備語句的一行。當我使用準備好的語句和綁定帕拉姆返回錯誤的結果(約200 ...):用mysqli和(?)返回0或錯誤的結果準備和bind_param

$stmt = $mysqli->prepare("SELECT SUM($user) FROM $datenbankid WHERE namepayer=?"); 
$value = "clemens"; 

if(!$stmt->bind_param("s", $value)){ 
    $response["errormessage"] = $stmt->error;  
    } 
    $stmt->execute(); 

    $stmt->bind_result($sum); 
    $stmt->fetch(); 

    $response["debtsan" . $value] = $sum; 

    $stmt->close(); 

但是,當我使用它,而bind_param它返回適量:

$stmt = $mysqli->prepare("SELECT SUM($user) FROM $datenbankid WHERE namepayer = Clemens"); 

    $stmt->execute(); 

    $stmt->bind_result($sum); 
    $stmt->fetch(); 

    $response["debtsantest" . $value] = $sum; 

    $stmt->close(); 

我得到沒有錯誤,沒有綁定參數它正在工作。但我想使用bind_param來避免sql注入。

感謝您的幫助。 德棉

+1

你確定'$ value'不是空的和/或它的串 – 2014-09-26 10:35:42

+0

我可以返回$值,它就像我定義它的字符串「clemens」。 – alltooconfusingthereforesleep 2014-09-26 10:40:16

+0

在打開'<?php'標記後立即向文件頂部添加錯誤報告 'error_reporting(E_ALL); ini_set('display_errors',1);'看看它是否產生任何東西。 – 2014-09-26 10:50:36

回答

0

,你可以嘗試使用此代碼,留下您的查詢,因爲它是使用此代碼下面的查詢

$value = "clemens"; 
    if($stmt === false) { 
     $response["errormessage"] =$mysqli->error;  
    } 
    $stmt->bind_param("s", $value); 
    $stmt->execute(); 
    $stmt->bind_result($sum); 
    while ($stmt->fetch()) { 
     printf("%i\n", $sum); 
    } 
+0

調用未定義的方法mysqli_stmt :: get_result() – alltooconfusingthereforesleep 2014-09-26 11:14:34

+0

在這種情況下,您可以使用'$ stmt-> bind_result($ sum);'當您使用並打印值 – 2014-09-26 11:23:10

+0

$ sum是可悲的0. – alltooconfusingthereforesleep 2014-09-26 11:39:17