使用MySQL和PHP我编写了以下事务代码。在第一个黄色块的代码中,我将字符串值赋给php变量$ b。我想在第二个黄色块MySQL事务语句中使用此值。
我喜欢将$ b与从变量第7行中获得的MySQL变量@A连接/连接起来。说MySQL变量@A给出一个值“试试这个”然后我想为saledesc插入“试试这个我的添加” saleno第10行的字段,如第二个黄线区块$ conn->查询(“INSERT INTO sales(saleno,saledesc)VALUES('10',@ A $ b)”);
但是上面的插入失败了。什么是正确的语句语法/方式来做到这一点。我的代码如下:
$ b =“我的添加”;
$ sqlstat =“SELECT @A:= saledesc FROM sales WHERE saleno ='7'”;
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//Transaction Start
$conn->beginTransaction();
$conn->query("$sqlstat");
$ conn-> query(“INSERT INTO sales(saleno,saledesc) VALUES('10' ,@ A $ B)“);
$conn->commit();
}
catch(PDOException $e)
{
echo $sql . "<br>" . $e->getMessage();
$conn->rollback();
}
$conn = null;
答案 0 :(得分:0)
@A
MySQL变量存在于MySQL服务器中,$b
变量存在于php程序的上下文中。表达式@A$b
正在尝试连接它们,但是当php将您的查询发送到MySQL时会产生奇怪的结果。
INSERT INTO sales(saleno,saledesc) VALUES('10',@Amy add) // wrong!
(艾米是谁?你为什么期望她添加一些东西?MySQL无法理解这一点。)
您应该使用类似的东西显式地在查询中连接两个变量。
$conn->query("INSERT INTO sales(saleno,saledesc) VALUES('10',CONCAT(@A, '$b'))");
顺便说一句,这不是RDBMS意义上的transaction。