【发布时间】:2012-06-25 15:58:35
【问题描述】:
我已经尝试了几天来获得我希望执行的正确格式。
目标是将行插入到先前创建的 MYSQL 表中。该表可能是字符串和整数的混合,我们知道 MYSQL 需要在字符串周围加上引号才能插入,而整数则不需要。那么,将某些内容插入一个整数和两个字符串的表中的正确方法是:
insert into table values(number, "string", "string");
我希望这些值是 php 变量。但是,当我输入变量时,当我签入 MYSQL 时,代码将不再产生结果。该表将被创建,但它将是空的。所以一定是这个语句不起作用。
这是我插入它的函数的实际代码:
function insertRow($db, $new_table, $ID, $Partner, $Merchant)
$insert = "INSERT INTO ".$new_table. " VALUES (1,'Partner','Merchant')";
$q = mysqli_query($db, $insert);
它的工作原理是这样的,但我选择的每一行都用 1、合作伙伴和商家填充整个表格。
我也尝试过这样的几种变体
function insertRow($db, $new_table, $ID, $Partner, $Merchant)
$insert = "INSERT INTO ".$new_table. " VALUES(" .$ID. "," ."'$Partner'". ","."'$Merchant'".")";
$q = mysqli_query($db, $insert);
我也试过这些:
Passing PHP variables into MySQL
但没有一个能够将表格实际插入行中。
有没有其他方法可以做到这一点?
【问题讨论】:
-
没有使用prepared statements的具体原因是什么?
-
你从数据库中得到错误信息了吗?它会告诉你问题出在哪里。
-
你可以试试 echo $insert 然后直接在phpmyadmin中执行。请务必检查 mysqli_query 返回的值,如果为假,请打印 $mysqli->error 以获取有关问题的更多信息
-
此处未显示,但我想您正在加强代码以防止 SQL inj?
-
同意 PeeHaa,如果您将在表中插入大量数据,则创建字符串不是最好的方法,因为数据库每次重复时都必须解析语句。准备好的语句将只解析一次,即使使用不同的数据,也对后续插入使用相同的语句。此外,如果您打算将数据从某种形式传递给此函数,则准备好的语句将有助于防止 njk 提到的 SQL 注入。