php 为什么这个简单的mysqli无法执行?[关闭]

tgabmvqs  于 2023-06-04  发布在  PHP
关注(0)|答案(1)|浏览(131)

**关闭。**此题需要debugging details。目前不接受答复。

编辑问题以包括desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将帮助其他人回答这个问题。
6天前关闭
Improve this question
我有一个'Scoring' PHP页面,它最终构建了一个MySQL字符串,以在后台DB上执行。该字符串基于localStorage中保存的值,这些值确实会根据用户的数据输入行为而更改,单击这里,然后单击那里......但是这些值(通过localStorage.getItem())可以很容易地设置为表单中文本输入字段的值。此SQL字符串保存到表单的输入字段中。这个基本字符串看起来像:int getName(1,2);
当表单从'Scoring'提交(POST)到另一个'Post Scores'页面时,我可以让'Post Scores'读取输入字段,“假定执行查询”,并回显结果(稍后)。该代码是:

$db = new mysqli("servername","username","waytoocomplexpassword");
if($db->connect_errno > 0) { die('Unable to connect: [' . $db->connect_error . ']'); }

$sqlupdates1q = "";

if (isset($_POST["sqlupdates1"]))
{               
    $sqlupdates1q = $_POST["sqlupdates1"];
    $db->query($sqlupdates1q);
}

我稍后在“PostScores”页面中回显了$sqlupdates1q变量,它输出了正确的字符串。所以,我知道它是从POST变量阅读的。我已经从浏览器中复制了该字符串并通过MySQL Workbench执行了它...它执行得很好,这是一个非常基本的字符串。但是,它并没有作为内联代码的一部分执行($db->query($sqlupdates1q);).
我可以成功地选择更新执行程序。。从大约一百个其他地方在我的网络应用程序,但这只是拒绝工作。有什么想法吗

bihw5rsg

bihw5rsg1#

对于那些有过类似挫折经历的人来说。原因很简单,要执行的字符串实际上是由多个语句组成的,这些语句之间用冒号(;)。这本身是很好的,并且将在MySQL Workbench中执行。但是,mysqli::query只处理单个语句。如果你需要多个语句,那么你必须使用mysqli::multi_query。
我完全同意,不要发布mysql语句。SQL注入的定义这仅仅是一个概念的证明。

相关问题