簡體   English   中英

SQL從數組插入值

[英]SQL Insert value from array

因此,我正在研究一些將一個文本和一個id插入表中的代碼。 我向代碼發送文本和用戶名。 我要使用用戶名,然后從用戶表中選擇與其對應的ID。 然后,我將其插入文本表。

我已經試過了:

$id = mysql_query("SELECT users.id FROM users WHERE name='$username'");

mysql_query("INSERT INTO `shouts` (`id`, `user`, `text`, `datetime`) VALUES (NULL, '$id', '$text', '$datetime');");

但這不起作用,因為變量$id保存sql數據。 如何將數據轉換為整數?

手冊

返回的結果資源應傳遞到mysql_fetch_array()和其他用於處理結果表的函數,以訪問返回的數據。

同樣從手冊中:

不鼓勵使用此擴展名。 相反,應使用MySQLi或PDO_MySQL擴展。

要回答您的問題,請嘗試以下操作:

$id = mysql_query("SELECT users.id FROM users WHERE name='$username'");
$id = mysql_fetch_assoc($id);
mysql_query("INSERT INTO `shouts` (`id`, `user`, `text`, `datetime`) VALUES (NULL, '". $id['id']."', '$text', '$datetime');");

盡管這是一個Bad Idea™,但您應該真正考慮使用PDO 其實並不難。 它將為您提供准備SQL語句的能力,從而使您知道自己不會成為SQL注入的受害者,從而真正能夠在晚上輕松入睡。 無論您是否已經成為受害者,您擁有的代碼充其量都是模棱兩可的。

嘗試$id = addslashes($id); 或任何其他編碼sql字符串的方法

$ id

要包含您的結果,您需要獲取ID並將其放入變量中。 簽出mysql_fetch_row函數,我認為這將為您提供所需的東西。 mysql_fetch_row語法

mysql_query從不返回普通變量,僅返回結果資源。 嘗試mysql_fetch_assoc從選擇查詢中獲取數據。 另外,不建議使用MySQL php擴展,建議您改用MySQLi或PDO。

這應該工作

   $sql = mysql_query("SELECT users.id FROM users WHERE name='$username'");
    $id = mysql_fetch_array($sql)['id'];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM