这对我来说是一个谜,到目前为止我没有读到的任何人都有这个问题,我在这里失去了理智,所以这里就是这样。我试图在一个mysql数据库上运行这个简单的查询,其中一个用户拥有所有必需的权限(通常ID数组中有多个条目):
$sqlDelete = 'DELETE FROM wsa.customers WHERE `id` IN (18)';
$result = $conn->query($sqlDelete);
当我从phpmyadmin和workbench运行此代码时,这执行得很好,但不在服务器上使用php(尽管它确实处理更新和插入而没有问题)。
$ result不是一个结果对象(虽然它应该是),我看不到任何错误或警告......一切都好像没有什么事情变得糟糕但用户显然没有被删除。
我想知道我应该在哪里查看,因为这不是语法问题....我已经没有想法了。
由于
最新的方案问题:
CREATE TABLE `agreements` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`creator_id` int(11) NOT NULL,
`term` tinyint(4) NOT NULL,
`contractDate` date NOT NULL,
PRIMARY KEY (`id`),
KEY `creatorid_idx` (`creator_id`),
CONSTRAINT `userid` FOREIGN KEY (`creator_id`) REFERENCES `master`.`login` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;
CREATE TABLE `customers` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`agreement_id` int(11) NOT NULL,
`name` varchar(128) NOT NULL,
`plan` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY `agreementid_idx` (`agreement_id`),
CONSTRAINT `agr_id` FOREIGN KEY (`agreement_id`) REFERENCES `agreements` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=latin1;
更新2:连接细节:
$dbhost = 'localhost';
$dbuser = 'xxx';
$dbpass = 'yyy';
$conn;
$conn = new mysqli($dbhost, $dbuser, $dbpass, 'wsa');
if ($conn->connect_errno) {
echo "Failed to connect to MySQL: (" . $conn->connect_errno . ") " . $conn->connect_error;
}
答案 0 :(得分:0)
很抱歉...最后我错误地使用if(!result)
来测试查询是否通过上一次插入查询到达所显示的查询并导致整个事务失败。我很抱歉。感谢@Darwin von Corax指出我正确的方向。