2013-03-20 38 views
0

這是我的代碼。我的PHP查詢的任何問題?

<?php 

$a = bacon; 
$b = 20; 
$c = 30; 

$link = mysql_connect('localhost','root',''); 
mysql_select_db("test", $link); 

$sql = "UPDATE share SET price=". 
     PrepSQL($b) . ", place=" . 
     PrepSQL($c) . ", time=CURRENT_TIMESTAMP where num=1 and RID=(select IID from ingredient where Ingredient='" . PrepSQL($a) . "')"; 

mysql_query($sql); 

function PrepSQL($value) 
{ 
    // Stripslashes 
    if(get_magic_quotes_gpc()) 
    { 
     $value = stripslashes($value); 
    } 

    // Quote 
    $value = "'" . mysql_real_escape_string($value) . "'"; 

    return($value); 
} 
?> 

我發現上面的代碼無法更新數據庫表。 但是,如果我改變where條件 其中num = 1和RID「 然後,一切工作正常=(從成分其中成分= '培根'選擇IID)。 所以,我的代碼有問題? !非常感謝

+0

嘗試這看看錯誤'mysql_query($ sql)或死(mysql_error());'或'echo' $ sql'並且看看sql是否正確並且知道mysql_ *'如果折舊在php 5.5中,你必須使用'mysqli_ *'功能 – 2013-03-20 09:54:52

回答

0

你的子查詢

"[...] (select IID from ingredient where Ingredient='" . PrepSQL($a) . "')" 

確實應該

"[...] (select IID from ingredient where Ingredient=" . PrepSQL($a) . ")" 

因爲調用PrepSQL已經增加了單引號爲您服務。

此外,請避免使用mysql_* php函數,因爲它們現在已被棄用!對於其它選項,請見:http://www.php.net/manual/en/mysqlinfo.api.choosing.php

編輯:

也,你有可能是不確定的bacon不變,應該是"bacon"代替。

+0

謝謝。但即使我改變了代碼,查詢仍然無法更新表格。 – user2108245 2013-03-20 09:31:50

+0

您是否嘗試過在查詢後回顯'mysql_error()'的結果?還請向我們展示更新後的查詢,並且在將它發送到數據庫之前,您還可以嘗試'echo'它。 – 2013-03-20 09:39:42

+0

問題解決了。謝謝! – user2108245 2013-03-20 10:03:50

0

如果它應該是一個字符串,那麼它需要引號周圍

$a = 'bacon'; 
0

你應該使用:

<?php 

$a = "bacon"; 
$b = 20; 
$c = 30; 

$link = mysql_connect('localhost','root',''); 
mysql_select_db("test", $link); 

$sql = "UPDATE share SET price=". 
     PrepSQL($b) . ", place=" . 
     PrepSQL($c) . ", time=CURRENT_TIMESTAMP where num=1 and RID=(select IID from ingredient where Ingredient='" . PrepSQL($a) . "')"; 

mysql_query($sql); 

function PrepSQL($value) 
{ 
    // Stripslashes 
    if(get_magic_quotes_gpc()) 
    { 
     $value = stripslashes($value); 
    } 

    // Quote 
    $value = "'" . mysql_real_escape_string($value) . "'"; 

    return($value); 
} 
?>